微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 fork() 创建 5 个进程?

如何解决如何使用 fork() 创建 5 个进程?

我想创建 5 个进程,就像显示图片一样通过管道连接]

          P
       /     \
      M       M
      |        |
      C        C

解决方法

当您使用 fork() 时,kernel 将创建一个新进程,并将返回给子进程(新进程)0,将 PID 返回给父进程。所以,知道这是下面的代码来创建树

if ((pid = fork()) == 0) {
    //I am process M1
    if (pid = form()) == 0) {
       //I am process C1
    } 
} else {
// I am still in P,so go on the next branch
    if ((pid = fork()) == 0) {
       //I am process M2
       if (pid = form()) == 0) {
          //I am process C2
       }
    }
} 

使用 ps --forest 可视化流程树,如下例所示

~# ps --forest
    PID TTY          TIME CMD
   1295 pts/0    00:00:00 sudo
   1296 pts/0    00:00:00  \_ su
   1297 pts/0    00:00:01      \_ bash
   3541 pts/0    00:00:00          \_ ps

所以你会看到类似的东西:

~# ps --forest
    PID TTY          TIME CMD
   1295 pts/0    00:00:00 a.out
   1296 pts/0    00:00:00  \_ a.out
   1297 pts/0    00:00:00      \_ a.out
   1298 pts/0    00:00:00  \_ a.out
   1299 pts/0    00:00:00      \_ a.out

这将告诉您是否成功制作了这棵树。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。