首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在C中使用pstree显示子进程

如何在C中使用pstree显示子进程
EN

Stack Overflow用户
提问于 2019-04-29 20:29:00
回答 1查看 674关注 0票数 1

我被问到关于创建一个程序,在这个程序中一个进程生成32个子进程。我创建了下面的程序(它是正确的吗?),但是你知道我如何使用pstree命令来显示这些进程的树吗?感谢任何人的帮助。

代码语言:javascript
复制
#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;
}: 
EN

回答 1

Stack Overflow用户

发布于 2019-04-29 20:52:05

对我来说,在添加一些#include代码行之后,它就可以工作了,如下所示:

代码语言:javascript
复制
#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;
}

然后我就可以编译了:

代码语言:javascript
复制
gcc pp.c -o myprog

它生成myprog可执行文件。然后我运行它,当它运行时,我可以打开另一个终端窗口,在那里运行pstree,然后它显示父进程和32个子进程,它看起来像这样:

代码语言:javascript
复制
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进程,因此它看起来像预期的那样工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55903418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档