在C中给出父PID时,如何让所有的子进程的PID(How to get all child proc

2019-10-19 01:52发布

我知道,这可以通过庆典来完成: 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