什么是孤儿进程?什么是僵尸进程?

编辑:自学文库 时间:2024年09月22日
孤儿进程是当一个父进程在子进程结束前结束了,这时子进程就成为孤儿进程。
  孤儿进程会被操作系统的init进程收养,并由init进程负责回收其资源。
  在Unix类的操作系统中,每个进程都有一个父进程,当父进程退出时,操作系统将向父进程发送一个SIGCHLD信号,通知其子进程已经终止。
  这样父进程可以通过捕获该信号来回收子进程的资源。
  而僵尸进程是指已经终止但其父进程还没有回收其资源的进程。
  当一个子进程终止后但其父进程没有调用wait()或waitpid()来获取其终止状态时,子进程会变成僵尸进程。
  僵尸进程占用系统资源,包括进程表的一个条目以及一个唯一的PID,但不占用内存或CPU资源。
  当父进程调用wait()或waitpid()时,操作系统将会将僵尸进程从进程表中删除,释放其相关资源。
  为避免出现僵尸进程,可以在父进程中捕获SIGCHLD信号,并在信号处理函数中调用wait()或waitpid()来回收子进程的资源。
  这样可以确保僵尸进程不会长时间存在,从而保持系统的正常运行。