進程間通信之: 共享內存
下面是運行結果。從該結果可以看出,nattch的值隨著共享內存狀態的變化而變化,共享內存的值根據不同的系統會有所不同。
$./shmem
Createshared-memory:753665
/*在剛創建共享內存時(尚未有任何地址映射)共享內存的情況*/
------SharedMemorySegments--------
keyshmidownerpermsbytesnattchstatus
0x00000000753665david66620480
Child:Attachshared-memory:0xb7f59000/*共享內存的映射地址*/
Parent:Attachshared-memory:0xb7f59000
/*在父子進程中進行共享內存的地址映射之后共享內存的情況*/
------SharedMemorySegments--------
keyshmidownerpermsbytesnattchstatus
0x00000000753665david66620482
Child:Waitforenabledata...
Inputsomestring:
Hello/*用戶輸入字符串“Hello”*/
Parent:Deattachshared-memory
/*在父進程中解除共享內存的映射關系之后共享內存的情況*/
------SharedMemorySegments--------
keyshmidownerpermsbytesnattchstatus
0x00000000753665david66620481
/*在子進程中讀取共享內存的有效數據并打印*/
Child:Shared-memory:hello
Child:Deattachshared-memory
/*在子進程中解除共享內存的映射關系之后共享內存的情況*/
------SharedMemorySegments--------
keyshmidownerpermsbytesnattchstatus
0x00000000753665david66620480
Deleteshared-memory
/*在刪除共享內存之后共享內存的情況*/
------SharedMemorySegments--------
keyshmidownerpermsbytesnattchstatus
Finished
linux操作系統文章專題:linux操作系統詳解(linux不再難懂)
評論