如何在C中正确fork()n子进程?

Eri*_*ang 12 c fork

那是我的代码.

#include <stdio.h>
#include <stdlib.h>

int main ( int argc, char *argv[] )
{
    int i, pid;

for(i = 0; i < atoi(argv[1]); i++) {
    pid = fork();
    if(pid < 0) {
        printf("Error");
        exit(1);
    } else if (pid == 0) {
        printf("Child (%d): %d\n", i + 1, getpid());
        exit(0); 
    } else  {
        wait(NULL);
    }
}

}
Run Code Online (Sandbox Code Playgroud)

输出就是这样.

Child (1): 5676
Child (2): 4624
Child (3): 4800
Child (4): 5596
Child (5): 5580
Run Code Online (Sandbox Code Playgroud)

然而,这不是我作业中的预期输出.它应该是那样的.代码有什么问题?有人能帮我吗?

Child (2): 4625
Child (1): 4624
Child (3): 4626
Child (4): 4627
Child (5): 4628
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助.现在我会尝试一下.

PS对不起,我的英语不好.我希望你能理解我说的话.

小智 5

您的代码可以在我的计算机上完美运行。它可能取决于操作系统。

但是,如果没有给程序提供参数,则应检查argc是否不等于1以避免分段错误。