进程间通讯——管道

        通常,在一个用户计算机上会同时运行多个程序,而一个程序会有多个任务要完成,需要各个任务之间协同工作,所以需要完成进程间的通讯。

        进程间的通讯方式有:管道,信号量,共享内存,消息队列,socket套接字等

        不同的是,前几种通讯方式都是在单机上进行,而socket套接字是在多个机子之间进行,此篇博客先对管道进行一些讲解。

        管道在进程间传递数据(A进程将数据传递给B进程)

        管道分为   :有名管道(命令管道)    用mkfifo  创建,既是命令也是一个库函数

       在磁盘上会存在一个管道文件标识,但是管道文件并不占用磁盘空间(占一个inode)数据会缓存在内存上,有名管道可以应用于同一台的主机上的有权限访问的任意n个进程间的通讯。

        在俩个进程之间,用open和write和read等一系列库函数进行操作,open有同步,需要一读一写才能打开,管道为空,读阻塞

管道写端关闭,读,read返回值为0;管道读端关闭,写,异常  ——>SIGPIPE

                           无名管道 :父子进程之间,打开就创建好

         有名和无名的区别?

 有名:

     1、任意俩进程之间通信

     2、写入管道的数据在内存中存放,有名管道的文件大小为0;(在磁盘中存储)

    3、半双工通讯

无名

  1、只在父子进程之间通讯

  2、半双工通讯

 

单工:发送方只能发送,接收方只能接受

半双工:可以是接受方和发送方,但是同一时刻不能既是接受方和发送方(对讲机)

全双工:同一时刻可以既是接受方和发送方(打电话)

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值