当前位置:  技术问答>linux和unix

管道都关了,他还怎么共享呀?

    来源: 互联网  发布时间:2015-12-10

    本文导语:  #include #include #include intmain(void) { intfd[2],nbytes; pid_tchildpid; charstring[]="Hello,world!n"; charreadbuffer[80]; pipe(fd); if((childpid=fork())==-1) { perror("fork"); exit(1); } if(childpid==0) { /*Child process closes up in put side of pipe*/ close(fd[0]); //子...

#include
#include
#include
intmain(void)
{
intfd[2],nbytes;
pid_tchildpid;
charstring[]="Hello,world!n";
charreadbuffer[80];
pipe(fd);
if((childpid=fork())==-1)
{
perror("fork");
exit(1);
}
if(childpid==0)
{
/*Child process closes up in put side of pipe*/
close(fd[0]); //子进程把fd[0]都关了,父进程还怎么从fd[0]读数据呢?
/*Send"string"through the out put side of pipe*/
write(fd[1],string,strlen(string));
exit(0);
}
else
{
/*Parent process closes up out put side of pipe*/
close(fd[1]);
/*Readinastringfromthepipe*/
nbytes=read(fd[0],readbuffer,sizeof(readbuffer));
printf("Receivedstring:%s",readbuffer);
}
return(0);
}

子进程把fd[0]都关了,父进程还怎么从fd[0]读数据呢?

|
刚看了一下内核情景分析,好象是这样的,PIPE之后进程的文件打开表中分别有了一个指向管道文件的读端与写端.
子进程在FORK之后在其打开文件表中也有了指向同一个管道文件的读端与写端
在你CLOSE父进程的写端后与子进程的读端后,子进程就只能向管道文件中写,而父进程只能读出管道中子进程写的内容.

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux管道问题,管道建立后如何同步?
  • 哪位大侠知道Linux里的有名管道传送数据快不快?有名管道操作的过程是否有读写硬盘的操作?
  • 1哪位大侠知道Linux里的有名管道传送数据快不快?有名管道操作的过程是否有读写硬盘的操作?
  • 怎么样以非阻塞的方式从管道中读取数据?因为我用read函数时,如果管道没有数据就会阻塞住???
  • (100)"断开的管道" 在Socket编程当中,如果我连续发送包,例如1000次,总会出现"断开的管道"的错误提示,请问如何解决
  • 管道(|)是怎么实现的?
  • 我用管道作为一个程序的标准输入时,程序报错说不是一个终端不能做为标准输入,请问怎么样管道成为它的标准输入呢???具体错误信息见内
  • 多进程通讯的管道相关问题
  • 请问何时删除命名管道哪?
  • Linux下面的"匿名管道",是否对应着某种实体?
  • 串口和管道诡异的问题,在线急等解答
  • linux进程管道通信
  • jquery iis7站长之家
  • 命名管道open时被阻塞了
  • 如何实现管道和后台进程
  • 关于有名管道的权限问题?
  • 命名管道问题
  • linux 管道通信
  • 关于管道的用法
  • 请教大家一个关于管道的问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3