单个进程树与exec

时间:2015-04-19 12:27:35

标签: c linux

我必须使用fork()函数编写一个创建进程树的脚本。然后我需要在脚本中使用exec()函数,只使用pstree -c命令生成一个进程树。

好的,所以我创建了进程树,这不是问题,让我们说:

int main() {
   int pid1, pid2;
   if(pid1 = fork()) {
      printf("%d", pid1);
   } else if (pid2 = fork()) {
      printf("%d", pid2);
   } else {
      printf("%s", "parent process");
   }
   return 0;
}

但是如何使用exec函数来调用pstree -c命令?我怎样才能只展示一棵特定的树?

execl("/bin/pstree -c", "pstree -c", 0, 0);

我尝试使用/bin/,没有它......没有任何作用,运行脚本时不会显示树。

它会显示整棵树,而不仅仅是我使用过的叉子。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

使用execl时,每个命令参数应该是函数的单独参数。第一个参数应该是您想要执行的程序的路径;程序名称中没有-c,这是一个参数。如果您只想显示当前进程树,则需要添加PID参数。

char pid[10];
sprintf(pid, "%d", getpid());

execl("/bin/pstree", "pstree", "-c", pid, (char*)0);