Я получаю разное количество выходов в приведенном ниже коде. Иногда он печатает 6 PID или иногда 8 PID. Требуемый выход - 7 PID. Хотя иногда я могу получить 7 PID.Различные выходы в процессе разветвления
Дерево процессов:
A
/| \
B C D
/\ |
E F G
Мой код:
#include <stdio.h>
void main()
{
int pidb=-1;
if(fork()==0) pidb=getpid();
fork();
if(getppid()!=pidb) fork();
printf("%d\n",getpid());
}
Примечание: Предположим, что вызов вилка будет успешным.
[обновление]
Мы должны достичь его с помощью 3 вилы вызовов.
В чем заключается необходимость включения вызова wait()? –
@sidkamaria, если вы не будете ждать в основном процессе, тогда, когда ваш дочерний процесс будет продолжен, а основной процесс завершится, его дочерний элемент также будет разорван, чтобы ваш отпечаток не появился –
. Pid определяется как «pid_t», а не как int. – user3629249