Как правильно выполнить fork () n дочерних процессов в C?

Это мой код.

#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);
    }
}

}

Результат такой.

Child (1): 5676
Child (2): 4624
Child (3): 4800
Child (4): 5596
Child (5): 5580

Однако это не тот результат, которого я ожидал в моем домашнем задании. Так и должно быть. Что не так с кодом? Может ли кто-нибудь мне помочь?

Child (2): 4625
Child (1): 4624
Child (3): 4626
Child (4): 4627
Child (5): 4628

Спасибо за вашу помощь. Сейчас попробую.

P.S. Извини я плохо знаю английский. Надеюсь, вы понимаете, что я сказал.

12
задан Eric Tang 6 February 2012 в 03:18
поделиться