Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在尝试从在 apache2/WSGI Python 中运行的 Django 应用程序中 fork() 和 exec() 一个新的 python 脚本进程。新的 python 进程被守护,因此它与 apache2 没有任何关联,但我知道 HTTP 端口仍然打开。新进程杀死了 apache2,但结果是新的 python 进程现在保持端口 80 和 443 处于打开状态,我不想要这个。
如何从新的 python 进程中关闭端口 80 和 443?有没有办法访问套接字句柄描述符以便关闭它们?
如果您使用subprocess模块执行脚本,构造函数的close_fds参数Popen可能会执行您想要的操作:
subprocess
close_fds
Popen
如果 close_fds 为 true,则在执行子进程之前,将关闭除 0、1 和 2 之外的所有文件描述符。
假设它们不是简单地关闭,前三个文件描述符传统上是stdin,stdout和stderr,因此 Django 应用程序中的侦听套接字将在子进程中关闭的套接字中。
stdin
stdout
stderr