如何在C中创建流程链?

时间:2016-06-12 00:27:39

标签: c

我需要创建5个进程,一个是第二个的父亲,第三个的爷爷等等。所有人都必须等待彼此完成。我试过这个方法:

switch (pid = fork()) {
  case 0: 
    printf("Child PID = %d\n", getpid());
    printf("parent: =\%d\n", getppid());
    return 0;

default:
  break;

但我总是得到同一个父母。

2 个答案:

答案 0 :(得分:2)

您需要使用递归。

例如:

void create_processes(int n) {
  if(n == 0) return;
  if(fork() == 0) {
    int status;

    // You're in the child process. Calling it recursively will have the
    // child's PID as parent
    create_processes(n - 1);

    // Do work you need done before the child terminates
    wait(&status);
    // Do work you need done after the child terminates
  } 
}

然后将其称为

create_processes(5);

答案 1 :(得分:0)

调用不返回任何类型的进程myProcess并将int作为参数。然后...

void myProcess(int x) 
{ 
if (x > 5) return;
if (x != 0)
    myProcess(x - 1);
return;
};

int main()
{
int myvar = 5;
myProcess(myvar);
return 0;
}

这是递归完成的。