![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux 进程间通信
浪里狼
这个作者很懒,什么都没留下…
展开
-
进程间通信-FIFI(命名管道)
与无名管道不同,FIFO可用于无关系的进程之间1.管道读写端操作,如果读写端有一方读或写没打开,则另一端阻塞直到打开(非阻塞情况下会成功打开)2.如果管道buf满了没有剩余空间,则写端会阻塞直到管道有pipe_buf的空间(如果管道是以非阻塞打开的,则空间满了继续写那么出错返回)3.读段会一直阻塞直到写端向读端写入数据(非阻塞情况下出错返回)4.多个读段去读,如果读的buf原创 2015-07-27 09:12:37 · 698 阅读 · 0 评论 -
进程间通信-共享存储
共享存储 进程间通信方式之一,创建一个共享存储区,各个进程通过在指定地址或者内核选用第一个可用地址来对共享存储区进行数据的读写操作达到进程间数据交互。对同一个共享存储区操作,会涉及到对同一块数据进行修改操作,导致数据混乱甚至段错误,所有应该给操作加上锁,保证同一时刻只有一个进程在操作共享存储区。1.创建共享存储区 调用shmget创建或引用已存在的原创 2015-07-24 17:14:16 · 854 阅读 · 0 评论 -
进程间通信-队列
消息队列消息队列是通过标识来引用,消息队列类似于一个消息链表,通过队列标识来引用,标识通过key来获取msgget(key_t key, int flag)。创建队列过程:1.确定队列的key,key可以自定义,也可以利用ftok来获取一个key①利用ftok来得到一个key值ftok(const char * path, int id)路径必须是一个存在的文件路径原创 2015-08-07 09:00:20 · 783 阅读 · 0 评论 -
进程间通信-管道
管道是进程间通信方式之一,进程间可以利用管道来进行通信,好比两个地方,相隔了一条河,管道就是这条河上的一座桥,两个地方通过这座桥才得以进行相互访问。优点:1.管道可以使两个需要相互交互的进程调用管道来实现相互数据的交互 2.多个进程同时向同一个管道写数据时,当数据小于PIPE_BUF(4096),那么写操作是原子操作,不必给这多个进程的写操作加锁缺点:1.管道只能用于具有亲缘原创 2015-07-11 12:57:47 · 725 阅读 · 0 评论 -
进程间通信-信号量
信号量简介:信号量与其他的ipc(管道 fifo 消息队列)不同,他是一个计数器,来计数可以访问共享资源的进程数信号量操作1.创建一个信号量2.对信号量进行初始化3.测试控制共享资源的信号量4.若信号量为正则进程可以使用该资源信号量减一5.若信号量为0则进程阻塞(如果设置成非阻塞则出错返回)直至信号量变正.信号量唤醒,返回第3步执行6.若进程不再需要使用共享原创 2015-08-10 09:18:47 · 1647 阅读 · 0 评论