欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

Linux编程练习:利用无名管道实现父进程从管道读取数据,子进程从终端设备上向管道写入数据。

时间:2023-05-15

实现代码: 

1 #include 2 #include 3 #include 4 #include 5 int main(int argc,char const *argv[]) 6 { 7 pid_t pid; 8 int fd[2]; 9 pipe(fd); 10 pid=fork(); 11 if(pid==-1) 12 { 13 perror("fail to fork"); 14 exit(1); 15 } 16 if(pid==0) 17 { 18 while(1) 19 { 20 char str_son[10]; 21 fgets(str_son,10,stdin); 22 //这里也可以用read从终端读取数据:read(0,str,10); 23 printf("ths son str is %sn",str_son); 24 write(fd[1],str_son,10);//向管道写入数据 25 } 26 } 27 else 28 { 29 while(1) 30 { 31 char str_par[10]; 32 read(fd[0],str_par,10);//从管道读取数据 33 printf("the parent str is %sn",str_par); 34 } 35 } 36 }

运行结果:

helloths son str is hellothe parent str is hello^C

这里输出后有两次换行,一次是代码里写着的'/n',另一次是在终端按下回车后产生的,fegts会把回车符按字符存储起来。

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。