Linux学习笔记(进程间通信)

进程间通信的概念

(IPC)进程间通信
Linux下的多个进程间的通信机制叫做IPC,它是多个进程之间进行相互沟通的一种方法。通过进程间通信可以实现不同进程之间传播和交换信息。

进程间通信的目的
1.数据传输
2.资源共享
3.一个进程需要向另一个或一组进程发送消息,通知它或它们发生了某种事件
4.进程控制

进程间通信的方式
在Linux下有多个进程间通信的方法:半双工管道、FIFO(命名管道)、消息队列、信号量、共享内存、socket(套接字)、信号等。

适用于一台机器上
1.管道(分为无名管道和命名管道)
2.信号(通过kill -l命令可以查看机器支持的信号)
3.消息队列
4.共享内存
5.信号量(操作系统中是PV操作)

不同机器间通信
socket(网络通信)

各种通信的特点

管道
无名管道可以用于具有亲缘关系进程间的通信
命名管道可以用于无亲缘关系进程间的通信

信号
信号是比较复杂的通信方式,用于通知接受进程有某种事件发生
信号是进程间惟一的异步通信方式。
signal(用于信号挂载函数)和kill(发信号,只能发信号,不带参数)
sigaction(用于信号挂载函数)和sigqueue(发信号,可以带参数)

消息队列
消息队列是消息的链表
消息队列克服了信号承载信息量少的缺点

共享内存
使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。
注意:往往与其他通信机制,如信号量结合使用,来达到进程间的同步及互斥。

信号量
主要作为进程间以及同一进程不同线程之间的同步手段。

套接字(socket)
更为一般的进程间通信机制,可用于不同机器之间的进程间通信,网络通信。

你可能感兴趣的:(Linux)