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

请问一下,这个内容没有输出到屏幕?

    来源: 互联网  发布时间:2017-05-16

    本文导语:  #include  #include  #include  #include  #include  int main(void) { char buf[]={0}; int fd1=0,fd2=0; if(mkfifo("/home/leilei/linux/try/tmp.fifo",0666)) { perror("创建失败n"); exit(-1); } pid_t pid=fork(); if(pid0)//parent process { char s[]="hello,world!"; fd1=open...


#include 
#include 
#include 
#include 
#include 

int main(void)
{
char buf[]={0};
int fd1=0,fd2=0;
if(mkfifo("/home/leilei/linux/try/tmp.fifo",0666))
{
perror("创建失败n");
exit(-1);
}
pid_t pid=fork();
if(pid0)//parent process
{
char s[]="hello,world!";
fd1=open("/home/leilei/linux/tyr/tmp.fifo",O_WRONLY);
write(fd1,s,sizeof(s));
close(fd1);
}
else
{
fd2=open("/home/leilei/linux/tyr/tmp.fifo",O_RDONLY);
read(fd2,buf,sizeof(buf));
printf("%sn",buf);
close(fd2);

return 0;
}


请问一下,这个内容没有输出到屏幕?[图片]

|
代码里,子进程和父进程 谁先执行到read 或 write是不确定,你在子进程可以加一个sleep,确保父进程已经在fifo文件里写入了
另外,子进程里 read(fd2,buf,sizeof(buf));  很明显的错误是sizeof(buf)等于1的,你最多读出一个h字符

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














站内导航:


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

©2012-2021,