首页 > 其他 > 详细

fork more than once subProcess

时间:2020-08-16 16:26:28      阅读:64      评论:0      收藏:0      [点我收藏+]
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <unistd.h>
#include <vector>

using namespace std;

int main() {

  int pid = 0;
  int subProcessNum;
  std::vector<pid_t> pidList;

  for (subProcessNum = 0; subProcessNum < 3; subProcessNum++) {
    pid = fork();
    if (pid == 0 || pid == -1) {
      break;
    } else {
      pidList.push_back(pid);
    }
  }

  int wait_pid = 0;
  if (pid == -1) {
    return -1;
  } else if (pid == 0) {
    printf("sub process cnt:%d\n", subProcessNum);
    sleep(1);
    exit(subProcessNum);
  } else {
    int status = 0;
    for (auto &pid : pidList) {
      if ((waitpid(pid, &status, 0) == -1) || WEXITSTATUS(status) != 0) {
        wait_pid = WEXITSTATUS(status);
      }
      printf("process pid:%d, exit status:%d\n", pid, WEXITSTATUS(status));
    }
    printf("mian process exit status:%d\n", wait_pid);
    return wait_pid;
  }
}

fork more than once subProcess

原文:https://www.cnblogs.com/ims-/p/13512715.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!