IPC概述
- 进程间通信(Inter-Process Communication,IPC)目的有数据传输,多进程同步,发送控制信息等。
-
在不同场合下使用的进程间通信机制如下图
图片来自黄茹老师主编的《linux环境高级程序设计》
System V IPC
图片来自黄茹老师主编的《linux环境高级程序设计》- shell中对System V IPC资源的使用情况显示和对资源的管理
查看System V IPC资源:ipcs
查看共享内存:ipcs -m
删除共享内存:ipcrm -m shmid
查看信号量:ipcs -s
删除信号量:ipcrm -s semid
查看消息队列:ipcs -q
删除消息队列:ipcrm -q queueid
IPC的标识符和键值
- 各自调用get函数,如
seg_id = shmget(SHM_KEY,1024,IPC_CREAT|0777);
通过约定的键值(KEY)来返回一个标识符(ID) - ID可以看做IPC对象的内部名
- KEY可以看做是IPC对象的外部名
ftok函数
ftok的作用将多个进程认定的同一个路径名和项目ID(0~255的字符值)转换为一个键值
#include <sys/ipc.h>
key_t ftok(char * path,int id);
参数表:
path:路径名
id:项目ID
返回值:
大于-1:成功
-1:失败
key = ftok(".",512);
seg_id = shmget(key,IPC_CREAT|0777);
网友评论