【发布时间】:2015-03-11 17:34:16
【问题描述】:
当我的 python 程序通常被 -9 杀死时,它也会关闭它正在侦听的端口。
但是,当它有一些使用 Popen 创建的子进程正在运行时(我真的不需要在杀死父进程时杀死它),而杀死 -9 父进程似乎使端口处于使用状态。
即使有孩子,如何强制关闭端口?
【问题讨论】:
-
你的程序无法关闭SIGKILL信号(
-9)的端口,可能是内核完成的,然后进程已经死了。
当我的 python 程序通常被 -9 杀死时,它也会关闭它正在侦听的端口。
但是,当它有一些使用 Popen 创建的子进程正在运行时(我真的不需要在杀死父进程时杀死它),而杀死 -9 父进程似乎使端口处于使用状态。
即使有孩子,如何强制关闭端口?
【问题讨论】:
-9)的端口,可能是内核完成的,然后进程已经死了。
好的,我知道在执行 Popen 时似乎 close_fds=True 可以解决问题。
【讨论】:
close_fds=True 是自Unix 上的Python 3.2 以来的默认值。它之所以有效,是因为close_fds=True 避免了将文件描述符泄漏给子进程。
close_fds=True,它应该可以工作。在 Unix 上的 Python 3.2+ 上,您不需要。