【发布时间】:2015-04-02 23:14:29
【问题描述】:
我有一个简单的程序(maximum1),可以打印文件中的最大数字。挑战在于使用分叉和管道来运行具有多个进程的多个文件,并从这些文件中打印出最高的数字。我关闭了第一个程序,以便打印数字,但是当我使用第二个程序(maximum2)时,我得到的数字比文件中的数字大。
我认为问题在于我对管道的使用或不理解对 num1 的转移。感谢您的帮助!
if ((childpid1 = fork()) < 0) {
perror("Fork1 Error.\n");
} else if (childpid1 == 0) { //Child Code
close(fd[0]);
dup2(fd[1], 1);
dup2(fd[1], 2);
close(fd[1]);
execl ("max1", "max1", argv[1], NULL);
perror("Failed Exec.\n"); //Make sure Execl works
} else { //Parent Code
waitpid(childpid1, &status, 0);
char buffer[1024];
close(fd[0]);
read(fd[0], buffer, sizeof(buffer));
sscanf( buffer, "%d", &num1);
printf("%d\n", num1);
}
【问题讨论】:
标签: c linux unix pipe system-calls