进程间通信

五种通讯方式

1.管道:速度慢,容量有限,只有父子进程能通讯    

  在内核中申请一块固定大小的缓冲区,程序有写入和读取的权利,一般使用fork函数实现父子进程的通信.

int pipe(int fd[2])
fd[1]写入数据,fd[0]读出数据,默认情况,这对描述符都是阻塞.

 

2.FIFO:任何进程间都能通讯,但速度慢    

3.消息队列:容量受到系统限制,且要注意第一次读的时候,要考虑上一次没有读完数据的问题    

4.信号量:不能传递复杂消息,只能用来同步 。信号量是一个计数器,可以控制多个进程对共享数据的访问。

5.共享内存区:能够很容易控制容量,速度快,但要保持同步,比如一个进程在写的时候,另一个进程要注意读写的问题,相当于线程中的线程安全,当然,共享内存区同样可以用作线程间通讯,不过没这个必要,线程间本来就已经共享了同一进程内的一块内存。

  共享内存允许两个进程访问同一块内存区域,它们使用同一个key值标记.

 

6.信号处理机制:用于通知接受进程某一事件已经发生。

posted @ 2020-01-10 16:58  GoingNow  阅读(135)  评论(0)    收藏  举报