【发布时间】:2018-04-17 01:03:50
【问题描述】:
取消 execlp 到 grep
这段代码有什么问题
int main(){
int fd[2];
pid_t child_pid;
pipe(fd);
if((child_pid = fork())<0){
perror("fork error");
exit(0);
}
if(child_pid >0){
close(fd[0]);
execlp("/bin/ps", "/bin/ps", "-ef", NULL);
}
else{
close(fd[1]);
execlp("/bin/grep", "/bin/grep", "root", NULL);
}
return 0;
}
有问题:/bin/grep:(标准输入):输入/输出错误
【问题讨论】:
-
是做一些功课(用C 编写
ps -ef | grep telnet的等效)还是你真的在C 程序中寻找哪些进程正在使用telnet? SO 不是 do-my-homework 服务。 -
您的问题缺少一些 Linux 或 POSIX 标记。
-
SO 不是 fix-my-bug 或 do-my-homework 服务。
-
不,您的问题是对 Linux 进程如何工作的误解(与
grep、ps、telnet没有真正的关系)。我的回答提供了一些线索,但我不会做你的功课。花几个小时阅读 ALP。 -
但是你可以用
echo替换ps,用wc替换grep,用telnet替换-l,你的程序仍然是错误的。所以你不是专门询问grep。 ALP 有几个章节与您的问题相关,您需要阅读它们。