Linux系统中进程间通信的5种基本机制

进程间通信指的是用户态的进程之间如何进行同步和交换数据。

Linux内核把对进程间通信的支持以函数的形式进行包装,并在库中以包装函数的形式提供给用户。


1)管道和FIFO(命名管道)

   最适合在进程之间实现 生产者/消费者的交互。一些进程向管道中写入数据,而另外一些进程则从管道中读取数据。

   管道是进程之间的单向数据流:一个进程向管道写入数据,而后,内核把这些数据重定向到另一个进程,另一个进

      程就可以从管道中读取数据。

      管道的缺点:无法打开已经存在的管道。除非管道是由一个共同的祖先进程创建,否则任意两个进程不能共享同一

                         个管道。

      FIFO(命名管道):有磁盘索引节点,任何进程都可以访问FIFO。

     在Linux中,FIFO和管道几乎是相同的,差别仅在于:

           1)FIFO索引节点出现在系统目录树上,而管道是在pipefs特殊文件系统中。

           2)FIFO是双向通信管道,而管道是单向的通信信道。

-------------------------------------------------------------------------------------------------------------------------------------------------------------

2)信号量

      是个计数器, 用于进程之间的同步

3)消息

       在预定义的消息队列中读和写消息来交换信息(小块数据)。

       消息是由固定大小的首部和可变长度的正文组成的。

   消息的实现标准有:System V IPC 消息 POSIX消息(比System V IPC 有优点)

     

4)共享内存区

       在共享内存区中交换信息(用于共享大量数据)。

      进程通过在其地址空间中映射共享内存区的页框,来访问其中的共享数据。


 注意:信号量、消息 和 共享内存区  合称 System V IPC。

---------------------------------------------------------------------------------------------------------------------------------------------------------------

5)套接字

   不同计算机或同一台计算机上不同进程之间通信。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值