进程间通信

本文介绍了Linux系统中实现进程间通信的四种主要方式:管道(包括单工、半双工和全双工模式)、消息队列、共享内存和信号量。详细讲解了每种通信方式的创建、使用及特点,如管道的file descriptors操作,消息队列的消息类型与收发,共享内存的直接内存访问,以及信号量的同步机制。
摘要由CSDN通过智能技术生成

进程间通信

进程间通信(IPC)
linux中实现进程间通信的几种方式:

管道

管道的特性:一边写,一边读。这边没有东西,另一端则处于阻塞状态。只有当另一端写入时,一端才能读出数据。
管道又分为几种模式:
单工:例如看电视,一端只能播放,一端只能接收,
半双工:例如对讲机,只能一端放,一端收,一个人说话,另一个人只能听。可以互相都说话。
全双工:例如打电话,两边都可以自由说或者听。
linux中一切皆文件:
管道文件的创建方式为:
int pipe(int fds[2])
fds是一个int型的数组。通过调用pipe函数,使得fds的两个值分别为文件描述符的值,这些文件描述符直接映射到对应的管道文件。fds[0]为管道输入端,fds[1]为管道的输出端。
我们可以通过fork子进程的方式来操作管道。
fork时,子进程继承父进程的所有数据,同时也复制出了管道文件描述符,因此我们可以在子进程中输入,输入的话我们将子进程中对应的读文件描述符关闭fds[0]。相对应的,我们将父进程的写文件描述符也关闭fds[1]。
这里写图片描述
创建管道文件函数:
int mkfifo(const char *name,mode_t mode);
打开管道文件 <

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值