天天看点

linux基础——IPC进程间通信

IPC进程间通讯

消息队列

向消息队列发送消息和接收消息

代码示例

共享内存

信号量集

使用命令ipcs可以查看IPC的对象。

linux基础——IPC进程间通信

ftok

1.第一步,获取一个键值。

2. 第二步,通过键值获取一块内存,将这块内存的id返回。

3. 第三部,通过内存id来操作这块内存。

ftok.c

执行结果

linux基础——IPC进程间通信

通过键值获取一块内存,将这块内存的id返回,需要使用到msgget获取内核内存的id。

通过键值获取消息队列的id

msgget.c

linux基础——IPC进程间通信

msgsnd

msgrcv

将一个消息放入消息队列中。

processA.c

从消息队列中获取消息并显示

processB.c

linux基础——IPC进程间通信

根据键值获取共享内存的id,通过shmget获取共享内存id。

int shmget(key_t key, size_t size, int shmflg);

将共享内存映射到进程的虚拟地址空间中,使用shmat

shmat(2)

*int shmdt(const void shmaddr);

创建共享内存段。

shm.c

linux基础——IPC进程间通信

使用共享内存完成进程间通信:

shmA.c

shmB.c

linux基础——IPC进程间通信

具体参考代码示例

mycp.c

linux基础——IPC进程间通信