Python使用os.fork()创建4个子进程并在父进程列出子进程问题
解决方案
实现思路
- 父进程中用列表存储每次
os.fork()返回的子进程PID(os.fork()在父进程中返回值就是子进程的PID,固定大于0) - 子进程分支中执行完等待逻辑后必须主动退出,避免子进程进入后续循环生成额外的孙进程
- 父进程完成4次fork后即可直接读取存储的PID列表,可额外增加等待子进程退出的逻辑避免产生僵尸进程
完整可运行代码
import os import time child_pids = [] for i in range(4): pid = os.fork() if pid > 0: # 父进程逻辑:存储子进程PID child_pids.append(pid) elif pid == 0: # 子进程逻辑:等待2秒后退出 time.sleep(2) print(f"子进程 {os.getpid()} 执行完毕,即将退出") os._exit(0) else: # fork失败处理 raise OSError("fork进程失败") # 只有父进程会执行到这里 print("父进程创建的所有子进程PID列表:", child_pids) # 可选:等待所有子进程退出,避免僵尸进程 for pid in child_pids: os.waitpid(pid, 0) print("所有子进程已退出,父进程结束")
运行说明
代码执行后会先打印父进程收集到的4个子进程PID列表,等待2秒后会依次打印每个子进程的退出提示,最终父进程等待所有子进程退出后结束。
内容的提问来源于stack exchange,提问作者Divs 4799
相关产品推荐
相关产品推荐

