我正在嘗試一些簡單的代碼上叉。當我給出這樣的代碼時,它工作正常。這將打印叉和殭屍進程
我是孩子
我父
,然後等待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秒)。
那麼是因爲沒有等待調用父節點退出並且子節點仍在執行?但爲什麼它沒有出現在終端(等待中)?
父母是否在這裏變成殭屍?
請不要使用太多的問號。 ;-) – Nayuki