1.回收子进程–Zombie态
- 当一个进程由于某种原因终止时,内核并不是立即把它从系统中清除,而是被保持在一种已终止的状态中,直到被它的父进程回收。这个过程(已终止但未被回收)的进程称为僵死进程(zombie)。
- 当父进程回收已终止的子进程时,内核将子进程的退出状态传递给父进程,然后抛弃已终止的进程。
- 若父进程终止,内核会将其子进程“过继”给init进程,init进程的PID为1,它不会终止,是所有进程的祖先。
2.加载并运行程序
- execve函数在当前进程的上下文中加载并运行一个新程序:包括可执行目标文件名、参数列表、环境变量列表。
int execve(const char* filename, const char* argv[], const char* envp[]); //若加载成功则不返回,否则返回-1