带exec的单进程树

带exec的单进程树,c,linux,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 { print

我必须使用
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/
,如果没有它,什么都不起作用,当我运行脚本时,树不会显示

不管怎样,它都会显示整棵树,而不仅仅是我用的叉子


如何才能做到这一点?

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

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

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