/**//*说明:了解Linux下进程和进程间通过管道通信 * 功能:统计2个文本文件的字数和,2个参数分别为两文件名 * 描述:父进程启动,开启子进程,子进程统计一个文本的字数, * 待子进程结束,父进程统计另一个,在父进程中计算和打印统计结果 */ #include <unistd.h> #include <stdio.h> #include <stdlib.h> int count(FILE*); int main(int argc, char*argv[]) ...{ int num1,num2,totalnum; //文件1,文件2,中的字数和总字数 FILE *fpin1,*fpin2; //两个文件指针 if (argc==3) ...{ fpin1=fopen(argv[1],"r"); fpin2=fopen(argv[2],"r"); } elseif (argc>3) printf("Too many args!! "); else printf("Input a file two file names to count their total words!! "); pid_t child; int status; int fds[2]; int buf1[1],buf2[1]; pipe(fds); //开启管道 if ((child=fork())==-1) ...{ perror("fork"); exit(EXIT_FAILURE); } elseif (child==0) //子进程 ...{ close(fds[0]); buf1[0]=count(fpin1); write(fds[1],buf1,sizeof(int)); //结果写入管道 exit(1); } else//父进程 ...{ wait(0); //等待子进程结束 read(fds[0],buf2,sizeof(int)); //从管道中读子进程返回结果 num1=buf2[0]; num2=count(fpin2); totalnum=num1+num2; printf("There are %d words in file1 ",num1); printf("There are %d words in file2 ",num2); printf("There are %d words in total ",totalnum); exit(1); } //关闭文件 fclose(fpin1); fclose(fpin2); return0; } //文件字数统计函数 int count(FILE* fpin) ...{ // 略... return0; }