我必须使用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/
,没有它......没有任何作用,运行脚本时不会显示树。
它会显示整棵树,而不仅仅是我使用过的叉子。
我该怎么做?
答案 0 :(得分:1)
使用execl
时,每个命令参数应该是函数的单独参数。第一个参数应该是您想要执行的程序的路径;程序名称中没有-c
,这是一个参数。如果您只想显示当前进程树,则需要添加PID参数。
char pid[10];
sprintf(pid, "%d", getpid());
execl("/bin/pstree", "pstree", "-c", pid, (char*)0);