如何在C

时间:2019-04-29 12:29:00

标签: c linux shell

快速问题,有人问我如何创建一个程序,其中一个进程生成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;
}: 

1 个答案:

答案 0 :(得分:0)

对我来说,这是在添加几行#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进程,因此它似乎可以正常工作。