Fork () Детские и родительские процессы

Я пытаюсь создать программу, которая использует Fork () для создания нового процесса. Выходной вывод должен выглядеть так:

Это дочерний процесс. Мой PID 733 и идентификатор моего родителя 772.
Это родительский процесс. Мой PID 772, и идентификатор моего ребенка 773.

Это то, как я кодировал мою программу:

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

int main() {
    printf("This is the child process. My pid is %d and my parent's id is %d.\n", getpid(), fork());

    return 0;
}

Это приводит к выходу:

Это ребенок. Мой PID 22163, а идентификатор моего родителя 0.
Это детский процесс. My Pid 22162, и идентификатор моего родителя составляет 22163. [

Почему он печатает оператор дважды и как я могу заставить его правильно показать идентификатор родителей после отображения идентификатора ребенка в первом предложении?

Редактировать:

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

int main() {
int pid = fork();

if (pid == 0) {
    printf("This is the child process. My pid is %d and my parent's id is %d.\n", getpid(), getppid());
}
else {
    printf("This is the parent process. My pid is %d and my parent's id is %d.\n", getpid(), pid);
}

return 0;
}
6
задан raphnguyen 1 September 2011 в 03:46
поделиться