1.什么是孤儿进程?
\qquad 父进程先于子进程结束,则子进程成为孤儿进程。父进程结束后,子进程的父进程由init进程接替。
#include<stdio.h>
#include<unistd.h>
#include <stdlib.h>
int main()
{
pid_t pid;
pid = fork();
if(pid==0){
while(1){
printf("i am child,my parent id is %u\n",getppid());
sleep(2);
}
}
else if(pid>0){
sleep(2);
printf("i am parent,my id is %u\n",getpid());
sleep(5);
printf("i am parent,i go to die!\n");
}
else{
perror("fork error");
exit(1);
}
return 0;
}
\qquad 运行结果,子进程的父进程的id发生改变。
2.什么是僵尸进程?
\qquad 子进程结束,但是父进程并没有对其进程回收,子进程残留资源(PCB)存放于内核中,变成僵尸进程。