我知道,这可以通过庆典来完成: pstree parent-pid
。 但是,我怎么能做到这一点in C
? 有没有不必遍历整个/ proc文件系统(例如系统调用/库函数)的任何方法?
Answer 1:
您可以使用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;
}
文章来源: How to get all child process's PIDs when given the parent PID in C