我必须写一个使用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/,但没有使用it...nothing works,当我运行脚本时,树不会显示。
无论如何,它将显示整个树,而不仅仅是我使用的叉子。
我该怎么做呢?
发布于 2015-04-19 20:33:07
使用execl时,每个命令参数都应该是函数的单独参数。第一个参数应该是要执行的程序的路径;程序名中没有-c,这是一个参数。如果您只想显示当前流程树,则需要添加一个PID参数。
char pid[10];
sprintf(pid, "%d", getpid());
execl("/bin/pstree", "pstree", "-c", pid, (char*)0);https://stackoverflow.com/questions/29729848
复制相似问题