编写一个父子进程之间用有名管道进行数据传送的C程序。父进程逐一读出一个文件的内容,并通过管道发送给子进程。子进程从管道中读出信息,再将其写入一个新的文件。程序结束后,对原文件和新文件的内容进行比较。

admin2016-05-14  28

问题 编写一个父子进程之间用有名管道进行数据传送的C程序。父进程逐一读出一个文件的内容,并通过管道发送给子进程。子进程从管道中读出信息,再将其写入一个新的文件。程序结束后,对原文件和新文件的内容进行比较。

选项

答案在程序清单17-2的namepipe_w.c中,创建和打开有名管道用于写,并从文件in.txt中读出内容,写入管道。namepipe_r.c打开有名管道用于读,并将读出内容写入文件out.txt。程序运行结束后经检查out.t.xt内容与in.txt文件内容完全一致。 程序清单17-2:namepipe_w.c和namepipe_r.c /*namepipe_w.c写有名管道程序,先运行*/ #include<stdio.h> /*NULL的说明*/ #include<sys/stat.h> /*s_IBIBO的说明*/ #include<fcntl.h> /*O WRONLY的说明*/ #deflne BUBSIZE 1024 main() { BILE*fp; int fd,n; char buf[BUBSIZE]; printf("Creat and write pipe.\n"); mknod("fifo",S IBIBO|0666,0);/*创建有名管道*/ fd=open("fifo",O_WRONLY);/*打开有名管道用于写入文件的内容*/ fp=fopen("in.txt","r");/*打开输入文件*/ while((n=fread(buf,1,BUBSIZE,fp))!=0)/*读文件、写有名管道*/ write(fd,buf,n); close(fp); close(fd); } /*namepipe_r.c读有名管道程序*/ #include<stdio.h> /*NULL的说明*/ #include<sys/statIh> /*S_IBIBO的说明*/ #include<fcntl.h> /*O_WRONLY的说明*/ #define BUBSIZE 1024 main() { BILE*fp; int fd,n; char buf[BUBSIZE]; fd=open("fifo",O_RDONLY); /*打开有名管道用于读*/ creat("out.txt",0600); fp=fopen("out.txt","w"); /*打开输出文件*/ printf("Read data from pipe\n"); while((n=read(fd,buf,sizeof(buf)))!=0) /*读有名管道、写文件*/ fwrite(buf,1,n,fp); close(fp); close(fd); }。

解析
转载请注明原文地址:https://kaotiyun.com/show/n4Nx777K
本试题收录于: 操作系统题库理工类分类
0

随机试题
最新回复(0)