在线等~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
但是实际这个不会输出
怀疑子进程根本没收到
为什么呢 展开
#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
但是实际这个不会输出
怀疑子进程根本没收到
为什么呢 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询