当前位置: 技术问答>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字符
另外,子进程里 read(fd2,buf,sizeof(buf)); 很明显的错误是sizeof(buf)等于1的,你最多读出一个h字符
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。