C++ fork() -- 创建进程“列表”

use*_*230 5 c++ fork

我有一个程序可以“一个一个”地创建新进程。是否可以更改此代码,以便创建进程的“列表”——即子进程 1 是子进程 2 的父进程,子进程 2 是子进程 3 的父进程,等等?

#include <string>
#include <iostream>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include "err.h"

using namespace std;
int main ()
{
 pid_t pid;
 int i;

 cout << "My process id = " << getpid() << endl;

 for (i = 1; i <= 4; i++)
  switch ( pid = fork() ) {
  case -1:
    syserr("Error in fork");

  case 0:
    cout << "Child process: My process id = " << getpid() << endl;
    cout << "Child process: Value returned by fork() = " << pid << endl;
    return 0;

  default:
    cout << "Parent process. My process id = " << getpid() << endl;
    cout << "Parent process. Value returned by fork() = " << pid << endl;

   if (wait(NULL) == -1) 
   syserr("Error in wait");

 }  
 return 0;
 }
Run Code Online (Sandbox Code Playgroud)