这些天遇到了一个端口继承的问题,使用spawn-fcgi将程序和端口绑定,程序中开一个子进程,kill掉父进程,子进程会继承父进程的端口。
图中是一个简单的demo,该进程绑定了6666端口,并且通过subprocess启动了一个while.py进程,while进程只有一个while(1)循环,确保进程不结束。
可以看到6666和9999端口都被绑定到32562进程上,现在kill掉32563进程。
现在6666端口已经被释放了,但9999端口被sock.py的子进程while.py继承了,此时绑定9999端口会失败。 再往上查了一些资料,了解到子进程继承父进程端口都是因为继承了父进程的文件描述符,但程序中可以看到,subprocess已经设置了clos