博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
进程间通信方式总结
阅读量:6832 次
发布时间:2019-06-26

本文共 746 字,大约阅读时间需要 2 分钟。

hot3.png

几种进程间通信方式:

1:管道:管道是一种半双工的通信方式,数据只能单向流动,而且只能具有亲缘关系的进程间使用。进程的亲缘关系通常指的是父子进程关系。

#include<unistd.h>

int pipe(int file_descriptor[2])

这里使用的是文件描述符而不是文件流。所以我们必须用底层的read和write调用来访问数据,而不是使用文件流库函数fread和fwrite。

一对文件描述符,只能保证父子进程间一个方向的数据传输,父进程和子进程必须有一个关闭file_descriptor[0],另一个关闭file_descriptor[1]。

2:信号量:信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。

程序对共享资源的访问,仅是程序代码很短的一段,但是这段代码可以引发进程之间竟态条件。这段代码称为临界区。

3:消息队列:它提供了一种在两个不相关的进程之间传递数据的方法。相比于命名管道,消息队列的优势在于,它独立于发送和接收进程而存在。

4:信号:信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。

5:共享内存:共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的IPC方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号量,配合使用,来实现进程间的同步和通信。

6:套接字:一种进程间的通信机制。主要用于网络中进程间的通信。当然也可以用于本地进程间通信,如UNIX域。

转载于:https://my.oschina.net/yulongjiang/blog/265984

你可能感兴趣的文章
Cross Validation done wrong
查看>>
C++的64位整数
查看>>
Entity Framework 6 Recipes 2nd Edition(9-5)译->删除一个断开的实体
查看>>
java RMI入门指南
查看>>
javascript日常总结
查看>>
Github获取仓库最新Release版本号API
查看>>
搭建自己的PHP框架心得(一)
查看>>
ReactiveCocoa代码实践之-更多思考
查看>>
了解一下JAVA中的NIO模块
查看>>
java编解码技术,json序列化与二进制序列化
查看>>
一个屌丝程序猿的人生(二十)
查看>>
关于php的mysqlnd驱动
查看>>
Response
查看>>
人人都看得懂的正则表达式教程
查看>>
python matplotlib 绘图
查看>>
Uncaught RangeError: Maximum call stack size exceeded解决思路
查看>>
运用.net core配合VS 2015制作nuget包
查看>>
JSP三大指令 /9大内置对象 /Javabean / EL
查看>>
WebPack系列:Webpack编译的代码如何在tomcat中使用时静态资源路径不对的问题如何解决...
查看>>
《HelloGitHub》之GitHub Bot
查看>>