默认情况下,Python的subprocess模块将所有打开的文件描述符传递给它生成的任何子进程。这意味着,如果父进程正在侦听某个端口,并且被终止,则它无法重新启动并重新开始侦听(即使使用SO_REUSEADDR),因为子进程仍然拥有该描述符。我无法控制子进程。在
子进程POpen构造函数确实接受close_fds参数,这将关闭子进程上的描述符,正如我所希望的那样。但是,有一个限制,仅在Windows上,它阻止在stdin/stdout也被覆盖的情况下使用它,我需要这样做。在
有人知道在Windows上解决这个问题的方法吗?在
Tags:
我周围没有windows设备,所以这还没有经过测试,但是我很想尝试一下操作系统.dup以及操作系统2方法;复制文件描述符并使用这些描述符而不是父描述符。在
我能找到的最相关的信息是:SetHandleInformation,在this文章中引用,应该会给你一些提示。在
您可能需要使用pywin32和/或ctypes来完成您想要的。在
相关问题 更多 >
编程相关推荐