多进程编程 - 共享内存( 二 )


  • 将shm_nattach减1
  • 将shm_lpid设置为调用进程的PID
  • 将shm_dtime设置为当前的时间
shmctl系统调用shmctl系统调用控制共享内存的某些属性 。定义如下:
#include <sys/shm.h>int shmctl(int shm_id, int command, struct shmid_ds* buf);其中,shm_id参数是由shmget调用返回的共享内存标识符 。command参数指定要执行的命令 。shm_ctl支持的所有命令如下表:
多进程编程 - 共享内存

文章插图
 
shmctl成功时的返回值取决于command参数,如上表,失败是返回-1,并设置errno 。
共享内存的POSIX方法mmap函数利用它的MAP_ANONYMOUS标志可以实现父、子进程之间的匿名内存共享 。通过打开同一个文件按,mmap可以实现无关进程之间的内存共享 。Linux提供了另外一种利用mmap在无关进程之间共享内存的方式 。这种方式无需任何文件的支持,但它需要先使用如下函数创建或打开一个POSIX可移植操作系统接口(Portable Operating System Interface of UNIX,缩写为


推荐阅读