Python中的ppid

Python中的ppidos.getpid()  返回进程pid os.getppid()  返回父进程pid 子进程返回0,父进程中返回子进程的pid.————————————————————————————————————————————————————————僵尸进程:                             若子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将成为一个僵尸进程。有什么坏处? 如果大量的产生僵尸进程,将因为…

大家好,欢迎来到IT知识分享网。

  • os.getpid()   返回进程pid

  • os.getppid()  返回父进程pid

   子进程返回0,父进程中返回子进程的pid.

————————————————————————————————————————————————————————

僵尸进程:                            

 

  若子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将成为一个僵尸进程。

 

有什么坏处? 如果大量的产生僵尸进程,将因为没有可用的进程号而导致系统不能产生新的进程. 此即为僵尸进程的危害,应当避免。

 

 僵尸进程的避免:

  1. 父进程通过os.wait()和os.waitpid()等函数等待子进程结束,这会导致父进程挂起。
  2. 如果父进程很忙,那么可以用signal函数为SIGCHLD安装handler,因为子进程结束后, 父进程会收到该信号,可以在handler中调用wait回收。
  3. 如果父进程不关心子进程什么时候结束,那么可以用signal(SIGCHLD,SIG_IGN) 通知内核,自己对子进程的结束不感兴趣,那么子进程结束后,内核会回收, 并不再给父进程发送信号。
  4. 还有一些技巧,就是fork两次,父进程fork一个子进程,然后继续工作,子进程fork一 个孙进程后退出,那么孙进程被init接管,孙进程结束后,init会回收。不过子进程的回收 还要自己做。

      子进程变成僵尸进程,是因为父进程先执行完,没有等待子进程结束。而wait()并不是用来等待子进程结束的,只是防止父进程先于子进程退出;如果父进程先退出,会使子进程成为僵尸进程,这时候子进程结束的时候就由1号init进程来回收。

主进程通过调用os.wait()等待子进程结束。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/23819.html

(0)
上一篇 2023-09-04 20:45
下一篇 2023-09-05 11:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信