![](https://img-blog.csdnimg.cn/20190927151117521.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
3.1 几种IPC
linux/unix几种IPC总结: 整理 匿名管道、命名管道、Posix消息队列,Posix信号量,Posix共享内存; 信号和socket在其他专栏整理
Nick_Zhang_123
存储、网络领域bug开发工程师
展开
-
04 共享内存
共享内存是最快的IPC,一旦内存区映射进程序的地址空间,进程间的数据传递就不在需要涉及内核,只是再共享内存区内存取数据需要用到同步,同步的方法有:互斥锁、条件变量、读写锁、记录锁和信号量。将文件映射进程序时,这时的映射文件共享内存呈随文件系统的持续性。管道、FIFO、消息队列读写数据时(消息队列可以通过内存映射实现、这时不涉及内核)。共享内存读写数据mmap、munmap和msync...原创 2019-12-17 20:42:20 · 287 阅读 · 0 评论 -
01 管道
1. 管道简单理解管道实质上是在内存或文件系统中创建一个共享文件,通讯方共享这个文件,每一方只允许对文件进行读或者写,数据流是单向的。管道内是字节流传递,没有分界线,不能随机读取,只能顺序读写。管道分为匿名管道和命名管道2. 匿名管道使用同一管道的进程间必须有亲属关系,对文件系统不可见,内核在内存中模拟管道管道应用:ls -al | grep xxx : ls -al 输出为管...原创 2019-12-06 20:08:57 · 195 阅读 · 0 评论 -
02 Posix 消息队列
一个进程向消息队列写入消息之前,并不需要某个进程在该队列上等待该消息的到达,而管道和FIFO如果没有读者就开始写,则会产生SIGPIPE信号、管道和FIFO是随进程的持续性,当管道和FIFO最后一次关闭发生时,仍在管道和FIFO中的数据会被丢弃。消息队列是随内核的持续性,即一个进程向消息队列写入消息后,然后终止,另外一个进程可以在以后某个时刻打开该队列读取消息。只要内核没有重新自举,消息队列没...原创 2019-12-10 20:39:53 · 222 阅读 · 0 评论 -
03 Posix信号量
文章目录1. 基本概念2. 命名信号量2.1 打开或者创建 sem_open2.2 关闭一个信号量 sem_close2.3 删除一个信号量 sem_unlink2.4 信号量操作: sem_wait,sem_post, sem_getvalue3. 未命名信号量(基于内存的信号量、匿名信号量)3.1 初始化信号量3.2 销毁信号量4. 其他4.1 信号量相关宏限制1. 基本概念信号量是一种...原创 2019-12-12 20:31:00 · 195 阅读 · 0 评论 -
参考链接
知乎:进程间通信的7种方式你都了解吗原创 2019-12-15 16:14:15 · 128 阅读 · 0 评论 -
《unix网络编程》- 卷2:进程间通信 --源码编译
SUSE Linux Enterprise Server 12 SP2 (x86_64) – kernal 4.4.21-69-default编译步骤:make 报错gcc -g -O2 -D_REENTRANT -Wall -D_POSIX_PTHREAD_SEMANTICS -c -o daemon_inetd.o daemon_inetd.cIn file in...原创 2019-11-06 15:00:39 · 323 阅读 · 0 评论 -
linux默认消息队列创建位置 &undefined reference to `mq_open'
unix网络编程 卷2进程间通信 Posix消息队列一章中,创建的消息队列在/tmp目录下,实际操作的时候发现该目录下没有新创建的消息队列,在Linux man page上发现默认创建位置在/dev/mqueue/下,参考https://linux.die.net/man/7/mq_overview在编译时报undefined reference to mq_open、undefin...原创 2019-12-10 11:20:17 · 2375 阅读 · 0 评论