打印子进程的退出顺序

时间:2018-07-24 16:36:24

标签: c process fork pid

我有这个代码。我的目的是从父进程创建n个子进程,并在创建每个子进程后打印它们的pid。

然后,我将使用rand_r函数和exit让每个子进程随机睡眠一段时间。我要打印子进程的退出顺序。我要按其退出顺序打印其pid。

这是我的C代码。它没有提供所需的输出:

#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h>

int func(int n) 
{
    if(n==0){return 0;}
    int pid=fork();

    unsigned int k=n;
    int x=rand_r(&k) % 3;
    //printf("here: %d\n", x);

    if(pid==0){
        printf("Child %d is created\n",getpid());
        func(n-1);
        sleep(x);
        printf("Child %d exited\n",getpid());
        exit(0);
    }
    return 1;
}


int main(int argc, char *argv[]){
    char *inp = argv[1];
    int n = atoi(inp);
    func(n);

    return 0;
}

我想要这样的输出:

Child 7432 is created 
Child 7433 is created 
Child 7434 is created 
Child 7435 is created   
Child 7433 exited 
Child 7432 exited 
Child 7435 exited 
Child 7434 exited

0 个答案:

没有答案