如何在C中给出父PID时获取所有子进程的PID

时间:2013-12-05 06:54:26

标签: c linux unix parent-child

我知道这可以通过以下方式在bash中完成:pstree parent-pid。但是我怎么能这样做in C?是否有任何方法不必迭代整个/ proc文件系统(例如系统调用/库函数)?

1 个答案:

答案 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;
}