gpt4 book ai didi

c - 带有 exec 的单进程树

转载 作者:太空宇宙 更新时间:2023-11-04 10:53:38 24 4
gpt4 key购买 nike

我必须使用 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/,但没有它...没有任何效果,当我运行脚本时没有显示树。

无论如何它都会显示整棵树,而不仅仅是我使用的 fork 。

我该怎么做?

最佳答案

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

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

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

关于c - 带有 exec 的单进程树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29729848/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com