System V IPC(linux进程与线程学习笔记)

    科技2022-08-04  99

     System V IPC       IPC对象包含:共享内存、消息队列和信号灯集          每个IPC对象有唯一的ID          IPC对象创建后一直存在,直到被显式地删除          每个IPC对象有一个关联的KEY          ipcs/ipcrm       System V IPC - flok       #include<sys/types.h>     #include<sys/ipc.h>          key_t ftok(const char *path,int proj_id);          成功时返回合法的key值,失败时返回EOF          path存在且可访问的文件的路径          proj_id 用于生成key的数字,不能为0       共享内存           共享内存是一种最为高效的进程间通信方式,进程可以直接读写内存,     而不需要任何数据的拷贝          共享内存在内核空间创建,可被进程映射到用户空间访问,使用灵活          由于多个进程可同时访问共享内存,因此需要同步和互动机制配合使用       共享内存使用步骤       创建/打开共享内存          映射共享内存,即把指定的共享内存映射到进程的地址空间用于访问          读写共享内存          撤销共享内存映射          删除共享内存对象       共享内存创建 - shmget       #include<sys/ipc.h>     #include<sys/shm.h>          int shmget(key_t key,int size,int shmflg);          成功时返回共享内存的id,失败时返回EOF          key 和共享内存关联的key,IPC_PRIVTE或ftok生成          shmflg共享内存标志位IPC_CREAT|0666

    Processed: 0.013, SQL: 9