在线等~linux c通过管道实现父进程子进程通信的小程序有问题,麻烦帮我看看

#include<stdio.h>#include<stdlib.h>#include<sys/types.h>#include<sys/stat.h>#include<... #include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/wait.h>
int main()
{
int i,n,chan[2];
pid_t pid;
char buffer[BUFSIZ+1];
char bufrec[BUFSIZ+1];
FILE *fout;
scanf("%s",buffer);

if(pipe(chan)<0)
{
printf("pipe failed\n");
exit(1);
}
if (pid=fork()<0)
{
printf("fork failed!\n");
exit(1);

}
else if (pid>0)
{
close(chan[0]);
write(chan[1],buffer,sizeof buffer);

}
else
{
close(chan[1]);
n=read(chan[0],bufrec,sizeof bufrec);
fout=fopen("piple.txt","w");
fprintf(fout,bufrec);
write(STDOUT_FILENO,bufrec,n);
}
exit;
}

实现是键盘输入后
可以显示在屏幕上
并存入txt
但是实际这个不会输出
怀疑子进程根本没收到
为什么呢
展开
 我来答
ssilspro
2011-12-29 · TA获得超过2625个赞
知道大有可为答主
回答量:1148
采纳率:0%
帮助的人:1716万
展开全部
if (pid=fork()<0)
这行错了,pid=fork()要加个括号: ( pid=fork() ) < 0
不然就认为是 pid = (fork()<0) 这样了
fork成功的话fork()<0是假0, 再pid=0, 然后后面都到子进程里了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式