[英]How to get all child process's PIDs when given the parent PID in C
我知道这可以通过以下方式在 bash 中完成: pstree parent-pid
。 但是我怎么能in C
做到这一点? 是否有任何方法不必迭代整个 /proc 文件系统(例如系统调用/库函数)?
您可以使用popen
读取命令ps -ef
的输出,然后查找指定PID
的所有子进程
int getAllChildProcess(pid_t ppid)
{
char *buff = NULL;
size_t len = 255;
char command[256] = {0};
sprintf(command,"ps -ef|awk '$3==%u {print $2}'",ppid);
FILE *fp = (FILE*)popen(command,"r");
while(getline(&buff,&len,fp) >= 0)
{
printf("%s\n",buff);
}
free(buff);
fclose(fp);
return 0;
}
@sundq 的答案是正确的,但有一个错误。
popen() 的文件描述符必须用pclose()
而不是fclose
关闭。 所以,只需替换fclose(fp);
与pclose(fp);
.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.