进程通信 之 管道 标准流管道

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进程通信 之 管道 标准流管道相关的知识,希望对你有一定的参考价值。


2、管道(无名管道):

       a、只能用于具有亲缘关系的进程之间通信;

       b、半双工模式,具有固定的读端和写端;

       c、管道不是普通文件,不属于任何文件系统,只存在于内存中;

       d、当一个管道通过函数 int pipe(int fd[2]) 创建时,fd[0] 为固定的读端,fd[1] 为固定的写端;

       e、对管道的读写,其实就是对内核缓冲区的读写;

       注意:

       I、 如果所有指向该管道读端的文件描述符都已经关闭,而写端继续写,则会收到SIGPIPE信号,通常会导致进程异常终止;

       II、 如果所有指向该管道写端的文件描述符都已经关闭,而读端继续读,则读端会继续读取完毕管道中的内容,读完后再次读取的时候,就会返回0 ,就像读到文件末尾一样;

       III、如果指向该管道的文件的读端和写端都没有关闭,但是写端没有向管道中写入数据,这时,读端会继续读取管道中剩余的数据,读取完毕后,阻塞等待,直到管道中再有数据;

       IIII、如果指向该管道的读端和写端都没有关闭,但是读端不读取任何数据,而写端不断写入数据,当管道被写满时,就会阻塞等待;


3、标准流管道:

     带有缓冲区

      函数: FILE* popen(char* command ,char* type);

                   int       pclose(FILE* stream);

     command 指的是路径+文件名;

     type表示的是读写方式,只能是其中一种方式,不能读写同时进行,当参数是两个时,只取第一个的值;


     wait4()被 pclose(FILE* stream)调用,等待管道进程运行结束,然后关闭文件流;


本文出自 “10891086” 博客,请务必保留此出处http://10901086.blog.51cto.com/10891086/1917532

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

Linux进程通信之匿名管道

Linux之------进程间通信

[ Linux ] 进程间通信之共享内存

操作系统之进程通信——管道

进程间通信之消息队列通信

进程间通信之管道