默认情况下,Python 的 subprocess 模块将所有打开的文件描述符传递给它产生的任何子进程。这意味着如果父进程正在侦听端口并被杀死,它无法重新启动并再次开始侦听(即使使用 SO_REUSEADDR),因为子进程仍然拥有该描述符。我无法控制子进程。
子进程 POpen 构造函数确实接受一个 close_fds 参数,它会关闭子进程上的描述符,就像我想要的那样。但是,仅在 Windows 上存在一个限制,如果 stdin/stdout 也被覆盖,则无法使用它,我需要这样做。
有谁知道在 Windows 上解决此问题的方法?