进程间通信之: 共享内存
下面是运行结果。从该结果可以看出,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不再难懂)
评论