进程间通信方式
管道
匿名管道
父子进程间通信
使用pipe(pipefd)来创建,其中pipfd是一个大小为2的int数组
单个管道不能实现双向通信,因为自己写的数据会被自己抢读
有名管道
可用于非父子进程间通信
使用步骤
mkfifo(路径,权限)创建
open打开管道
使用
实现双向通信,需创建两个管道
管道的实质,创建一个缓冲文件,两个进程,一个往管道中写数据。另一个从管道往出读数据
消息队列
实现方式,双向链表
使用
msgget( key_t key, int msgflg),创建消息队列
一般使用ftok函数创建key_t
msgsend(),发送
msgrecv(),接受
msgctl(),可以用来删除消息队列
共享内存
实现
在物理内存创建一块空间,映射得到进程的内存空间中
使用
shmget,创建共享空间
shmat,将共享空间映射到进程内存空间
shmdt,取消映射
shmctl,可以用来删除共享内存
信号量
实现同步或互斥,多值信号量,二值信号量
linux进程间通信的几种方式
最新推荐文章于 2024-09-15 17:30:17 发布