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)存放于内核中,变成僵尸进程。