Я пытаюсь простой код на форк.Когда я даю такой код, он работает нормально.Будет напечатано
Я - ребенок
Я - родитель
и затем ждет 30 секунд.Я понимаю, что это связано с переключением между этими двумя процессами.Сначала выполняется дочерний процесс, затем родительский, а затем дочерний ...
#include<stdio.h>
#include<stdlib.h>
main()
{
int pid;
pid=fork();
if(pid==0)
{
printf("\nI am the child\n");
sleep(30);
exit(0);
}
if(pid>0)
{
printf("\nI am the parent\n");
wait();
}
}
Но когда я дал как (без ожидания в родительском)
#include<stdio.h>
#include<stdlib.h>
main()
{
int pid;
pid=fork();
if(pid==0)
{
printf("\nI am the child\n");
sleep(30);
exit(0);
}
if(pid>0)
{
printf("\nI am the parent\n");
}
}
он просто печатает
Я - ребенок
Я - родитель
и выходит (без ожидания в течение 30 секунд).
Так и есть, потому что без ожидания родительского вызова выходита ребенка все еще исполняешь?Но почему он не отображается в терминале (ожидании)?
Является ли родитель здесь зомби?