vmo*_*eco 6 python macos fork python-3.x
我正在寻找有关以下代码片段中出现的错误的解释:
#!/usr/bin/env python3
import os, sys
if __name__ == '__main__':
while True:
pid = os.fork()
if pid == 0:
sys.exit()
elif pid > 0:
pass
# os.waitpid(pid, 0)
else:
sys.exit()
Run Code Online (Sandbox Code Playgroud)
这将产生许多进程(产生时退出的进程)。
这最终会导致BlockingIOError
这样的显示:
Traceback (most recent call last):
File "./asd.py", line 7, in <module>
pid = os.fork()
BlockingIOError: [Errno 35] Resource temporarily unavailable
Run Code Online (Sandbox Code Playgroud)
但是当os.waitpid
调用没有注释时,一切似乎都很好。
为什么会发生此错误以及此waitpid
调用可能会改变什么?
每当以fork
这种方式死亡时,都会出现同样的问题;错误消息就是这样EAGAIN
传达给您的:
RLIMIT_NPROC
)waitpid
修复它,因为它获取僵尸子进程;在您这样做之前,这些进程将计入上限(它必须保留它们,以便父进程可以查看终止信息)。
您可以在其手册页上查看记录的各种fork
错误代码。
归档时间: |
|
查看次数: |
1540 次 |
最近记录: |