[英]ps command linux vs unix different behavior in c program
我有一个简单的c程序,执行“ ps”并将其通过管道传递给“ grep”,基本上是“ ps | grep x'。
该代码或多或少是这样的:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(){
int pipefd[2];
int pid;
pipe(pipefd);
pid=fork();
if (pid == 0){
close(pipefd[1]);
dup2(pipefd[0], 0);
close(pipefd[0]);
execlp("grep", "grep", "b", (char *) 0);
}
else{
close(pipefd[0]);
dup2(pipefd[1], 1);
close(pipefd[1]);
execlp("ps", "ps", (char *) 0);
}
exit(0);
}
我的问题是,当我在UNIX(Solaris)上运行此程序时,它是完美的,但是当我在(Debian)上运行此程序时,它可以正确执行,但给我一条错误消息。
错误信息:
Signal 17 (CHLD) caught by ps (procps-ng version 3.3.3).
ps:display.c:59: please report this bug
我尝试了同一程序运行不同的命令,例如“ ls”和“ grep”,但在任一操作系统上都没有问题。 是什么使“ ps”与众不同?
编辑:
在代码中添加了包含的库。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.