ipc。。。。

IPC   进程间通信  interprocess communicate

无名管道:

pipe();-----------------------------------------------------------------------------------

pipefd[0] 读,pipefd[1] 写

生成两个文件描述符用于管道

0、1、2文件描述符已经被占用,所以从3开始

没创子进程时,父进程自己获得管道的读端和写端,自己写,自己读

fork() 之前打开文件和建立管道,子进程会继承父进程的文件表项和管道,可以利用父进程的写端fd[1] 和子进程的读端 fd[0] 进行单路通信,不必要的其它fd可以关掉

若是fork() 之后建立管道,则父子进程会建立各自的管道,则无法通信

先把 “quit” 写入管道中,再判断是否结束,子进程读到“quit” 则退出进程,父进程要进行收尸,再关掉文件描述符、退出。

因为read具有阻塞作用,所以当第二次循环上来打印完 “>” 后,子进程才打印出来,后来父进程再次输入时,前面就没有 “>” 号了

 

无名管道无法进行两个文件间进程的通信,只能进行有亲缘关系进程(继承)间通信(父-子-孙)

有名管道:

mkfifo();----------------------------------------------------------------------------------

man 3 mkfifo

不存在就创建,存在就直接往下走(若是都创建会报错)

单独地以读或写的方式打开,会阻塞,若是以读写的方式打开则相当于a.c直接获得了管道的读写两端,不会阻塞

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值