я следующий кодПонимание вилка() в Linux
void main()
{
pid_t pid,pid1;
pid = fork();
if(pid==0)
{
pid1= getpid();
printf("\n Child A %d" ,pid);
printf("\n Child B %d",pid1);
}
else
{
pid1 = getpid();
printf("\n Parent C %d:",pid);
printf("\nParent d %d:",pid1);
}
}
я не понимая, почему я получаю тот же идентификатор процесса B и C. Может кто-нибудь помочь мне здесь?
не ваши заявления печати немного перепутали? Если 'fork' возвращает' 0', то вы находитесь в дочернем процессе, поэтому печать 'pid' даст' 0', а печать 'pid1' (в результате вызова' getpid' внутри дочернего элемента) будет pid ребенок. Если вы находитесь в родительском, то 'pid' является pid процесса * child *, а' pid1' (в результате вызова 'getpid' внутри родителя) является pid родительского элемента. – lurker