ubuntu中孤兒程序的父程序pid並不是1??
阿新 • • 發佈:2019-01-30
剛剛寫了一個孤兒程序,順手列印了他的ppid,居然發現不是1,什麼鬼??!!!
因為在發現這個結果之前這個程序已經跑了很多遍了,新fork的程序都沒有退出,以為是因為這個原因所以結果跟我想的一樣。
然後sudo reboot,接著執行發現執行結果孤兒程序的ppid並不是1,ps aux發現這個代替了init程序來接管孤兒程序的程序名字叫做init–user,重啟了幾回都是這樣的,到現在問題還沒解決,寫博文備存。貼上程式碼。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int creat_orphan_proc()
{
pid_t pid;
int i;
pid = fork();
for(i - 0;i < 3;i++)
{
if(pid == -1)
{
printf("creat child error ...\n");
return -1;
}
else if(pid == 0)
{
printf ("I`m child proc my pid is %d,my parent pid is %d\n",getpid(),getppid());
sleep(3);
}
else
{
printf("I`m parent proc my pid is %d,I will exit\n",getpid());
exit(0);
}
}
}
int main()
{
creat_orphan_proc();
return 0;
}