我知道这可以通过以下方式在bash中完成:pstree parent-pid
。但是我怎么能这样做in C
?是否有任何方法不必迭代整个/ proc文件系统(例如系统调用/库函数)?
答案 0 :(得分:0)
您可以使用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;
}