【发布时间】:2014-03-31 14:58:02
【问题描述】:
下面的代码是这样工作的:
我创建了一个管道来连接两个进程。一个进程将是命令 who,以便知道哪些用户已登录。另一个进程将是命令 grep,它获取 who 的命令输出并在此输出中查找“用户”。如果用户已登录,则主程序的退出代码必须为 1,如果用户未登录,则必须为 0。我必须在哪里获取退出代码?
代码如下:
int fd[2];
pipe(fd);
int pid1,pid2;
pid1 = fork();
if (pid1 != 0) {
pid2 = fork();
if(pid2 == 0) {
close(0); dup(fd[0]); close(fd[0]), close(fd[1]);
execlp("grep","grep ","user",NULL);
} else {
close(fd[0]); close(fd[1]);
}
} else {
close(1);
dup(fd[1]);
close(fd[0]);
close(fd[1]);
execlp("who","who",NULL);
}
【问题讨论】:
标签: c linux pipe system-calls