我被问到关于创建一个程序,在这个程序中一个进程生成32个子进程。我创建了下面的程序(它是正确的吗?),但是你知道我如何使用pstree命令来显示这些进程的树吗?感谢任何人的帮助。
#int main()
{
for(int i = 0; i < 32; ++i)
{
if(fork() == 0)
{
sleep(5);
return 0;
}
}
for(int i = 0; i < 32; ++i)
{
waitpid(-1, NULL, 0);
}
return 0;
}: 发布于 2019-04-29 20:52:05
对我来说,在添加一些#include代码行之后,它就可以工作了,如下所示:
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
int main() {
for(int i = 0; i < 32; ++i) {
if(fork() == 0) {
sleep(30);
return 0;
}
}
for(int i = 0; i < 32; ++i)
waitpid(-1, NULL, 0);
return 0;
}然后我就可以编译了:
gcc pp.c -o myprog它生成myprog可执行文件。然后我运行它,当它运行时,我可以打开另一个终端窗口,在那里运行pstree,然后它显示父进程和32个子进程,它看起来像这样:
systemd-+-[...]
|-[...other stuff...]
|-systemd-+-(sd-pam)
| |-[...other stuff...]
| |-gnome-terminal--+-bash---myprog---32*[myprog]
| | |-bash---pstree
| | `-4*[{gnome-terminal-}]
| |-[...other stuff...]我猜这里的bash---myprog---32*[myprog]部分意味着myprog进程创建了32个子myprog进程,因此它看起来像预期的那样工作。
https://stackoverflow.com/questions/55903418
复制相似问题