【发布时间】:2016-02-18 10:45:34
【问题描述】:
我正在尝试在 python 中使用 fork 编写套接字服务器。当客户端连接时,会以某种方式创建一个新的分叉,这个分叉进程将处理包括发送/接收在内的连接。
我在 Linux centOS 上运行了这个脚本,并使用 htop/top 监视资源以查看显示了多少分叉(任务)。这
问题是当我使用os._exit(0) 杀死一些叉子时,htop 不会改变(自然必须通过杀死叉子来减少它),当我关闭 python 脚本时,一切都会恢复正常(Ram 使用和任务)。
所以当我使用os._exit(0) 杀死一些fork 时,我必须这样做,另一方面它会影响htop 释放所有资源并且不要等到它自己的父级被杀死?
这是创建分叉的代码:
def test(sock):
//handle socket then return
for i in range (1000):
sock,addr=socket.accept()
pid=os.fork()
if pid==0:
test(sock)
os._exit(0)
elif pid !=-1:
os.waitpid(-1, os.WNOHANG)
【问题讨论】: