Linux 进程间通信总结

Linux 进程间通信

通信目的:

²  数据传输

    一个进程需要将它的数据发送给另一个进程

²  资源共享

    多个进程之间共享同样的资源

²  通知事件

    一个进程需要向另一个或一组进程发送消息,通知它们发生了某种事件

²  4.进程控制

    有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有操作,并能够及时知道它的状态改变

 

进程间通信方式包括:

1、  无名管道(pipe)和有名管道(FIFO)

管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,还允许无亲缘关系进程间的通信。

2、  信号(signal)

用于通知接受进程有某种事件发生,除了用于进程间,也可以发送信号给进程本身。

信号是对终端机制的一种模拟,是一种异步通信方式。

信号可以直接进行用户空间进程和内核进程之间的交互,内核进程也可以用它来通知用户空间发生了哪些系统事件,可以在任何时候发给一个进程,而无需知道该进程的状态。

如果该进程当前并未处于执行状态,则该信号就有内核保存起来,直到该进程恢复执行再传递给他;如果一个信号被进程设置为阻塞,则该信号的传递被延迟,直到其阻塞被取消时才传递给进程。

3、  消息队列

消息队列是消息的链接表。消息队列克服了信号承载信息量少,管道只能承载无格式字节流,以及缓冲区大小受限等缺点

4、  共享内存

最有用的进程间的通信方式。同一块物理内存被映射到进程A,B各自的进程地址空间,A可以及时看到B对共享内存空间中数据的更新。

效率高,进城可以直接读写内存,不需要任何数据复制。

5、  信号量

主要作为进程间,以及同一进程不同线程之间的同步手段。信号量是用来解决进程之间的同步与互斥问题的一种进程之间的通信机制,包括一个称为信号量的变量和在该信号量下等待资源的进程等待队列,以及对信号量进行的两个原子操作(PV操作)

信号量对应于某一种资源,取一个非负的整形值。信号量的值是指当前可用的资源数量。

6、  套接字(socket)

可用于不同机器之间的进程间通信。

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页