进程间通信---管道
Posted ZDF0414
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进程间通信---管道相关的知识,希望对你有一定的参考价值。
为什么进程间需要通信? 1 、数据传输 一个进程需要将它的数据发送给另一个进程。 2 、资源共享 多个进程之间共享同样的资源。 3 、通知事件 一个进程需要向另一个或一组进程发送消息,通知它们发生了某种事件。 4 、进程控制 有些进程希望完全控制另一个进程的执行(如 Debug 进程),此时控制进程希望能够拦截另 一个进程的所有操作,并能够及时知道它的状态改变。 ******************************************************************************************************************* 进程间通信的数据交换发生在操作系统在内核中开辟的一块缓冲区。所以在读写过程中会发生两次数据的拷贝(写端在写完数据后,需要把数据拷贝到内核区;读端在读数据时,需要从内核区把数据拷贝到读端,才能读)管道是一个文件,是用环形队列实现的,管道通信适用于父子进程(有血缘关系的)
******************************************************************************************************************* 一、管道的创建

(3) 如果所有指向管道 读端 的文件描述符 都关闭 了 ( 管道读端的引用计数等于 0), 这时有进 程向管道的写端 write, 那么该进程会收到信号 SIGPIPE, 通常会导致进程异常终止 。
(4) 如果有指向管道 读端 的文件描述符 没关闭 ( 管道读端的引用计数大于 0), 而持有管道读 端的 进程也 没有从管道中读数据 , 这时有 进程向管道写端写数据 , 那么在管道被写满时 再 次 write 会阻塞 , 直到管道中有空位置了才写入数据并返回。 *******************************************************************************************************************
四、用管道实现进程间通信



以上是关于进程间通信---管道的主要内容,如果未能解决你的问题,请参考以下文章