Я пытаюсь создать программу, которая использует 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;
}