【面试】 之 详解 进程间通信 !!

在这里插入图片描述

为什么要进程间通信

进程是一个独立的资源分配单元,不同进程(这里所说的进程通常指的是用户进程)之间的资源是独立的,没有关联,不能在一个进程中直接访问另一个进程的资源(例如打开的文件描述符)。

但是,进程不是孤立的,不同的进程需要进行信息的交互和状态的传递等,因此需要进程间通信( IPC:Inter Processes Communication )。

进程间通信的目的

  • 数据传输:一个进程需要把它的数据传输给另一个进程
  • 资源共享:多个进程之间共享同样的资源
  • 通知事件:一个进程需要向另外一个进程或一组进程发送消息,通知他们发生了某种事情(例如进程终止要通知父进程)
  • 进程控制:有些进程希望完全控制另一个进程的执行(如DEBUG进程),此时控制进程希望能够拦截另一个进程所有陷入和异常,并能够及时知道他们的状态改变。

管道

$ ps auxf | grep mysql

< | > 竖线就是管道,功能是将前一个命令的输出作为后一个命令的输入。可以看出,管道的数据传输是单向的,如果想互相通信,需要创建两个管道。

上述是匿名管道,使用完就要销毁

还有一个类型是命名管道,也被叫做FIFO,因为数据是先进先出的传输方式。

使用命名管道需要用mkfifo创建,并命名。

mkfifo mypipe

因为linux下一切皆文件,所以可以使用ls -l查看:
在这里插入图片描述
类型文件是P,即管道。

向管道中写入数据:

echo "hello" > mypipe

发现命令停

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值