管道输出问题

#include

 1<stdio.h>   
 2#include <unistd.h>   
 3#include <sys types.h="">   
 4#define MAXLINE 20   
 5int main()   
 6{   
 7int n1,n2,fd[2];   
 8pid_t pid;   
 9char line[MAXLINE];   
10char line2[MAXLINE];   
11if(pipe(fd)&lt;0)   
12printf("pipe error");   
13if((pid=fork())&lt;0)   
14printf("fork error");   
15else if(pid&gt;0){ //parent   
16write(fd[1],"how are you?\n",MAXLINE);   
17  
18wait();   
19n1=read(fd[0],line2,MAXLINE);   
20write(STDOUT_FILENO,line2,n1);   
21}else{   
22//close(fd[1]);   
23n2=read(fd[0],line,MAXLINE);   
24write(STDOUT_FILENO,line2,n2);   
25  
26write(fd[1],"fine,thanks\n",MAXLINE);   
27  
28}   
29exit(0);   
30}   
31输出怎么会这样?   
32?慷褸4k@怈fine,thanks   
33\---------------------------------------------------------------   
34  
35正确答案:   
361、pipe是单工机制的,对于你写的pipe你只能从父进程写,从子进程读。   
372、write(STDOUT_FILENO,line2,n2);要改为write(STDOUT_FILENO,line,n2);   
383、write时不要用MAXLINE,这样将会往PIPE中写入一些无用的数据(乱码)。这个参数要用实际的值。   
394、要实现父子进程间的通讯,你可以用两个PIPE。</sys></unistd.h></stdio.h>
Published At
Categories with 服务器类
Tagged with
comments powered by Disqus