|
发表于 2021-11-24 13:07:16
|
显示全部楼层
本楼为最佳答案
本帖最后由 hrpzcf 于 2021-11-24 13:08 编辑
子进程要打开标准输入输出流才能输入输出
- import sys
- import os
- import multiprocessing
- def fun1(mainpid):
- if os.getpid() != mainpid: # os.getpid()获取当前进程id,如果跟mainpid不相等则说明是新进程
- print("是子进程,打开标准输入输出流...")
- # 以下两句为子进程打开标准输入输出流
- sys.stdin = os.fdopen(0, "r") # 打开标准输入流
- sys.stdout = os.fdopen(1, "w") # 打开标准输出流
- s = input("请输入:")
- print(s)
- if __name__ == "__main__":
- mainpid = os.getpid() # 获取当前进程id
- proc1 = multiprocessing.Process(target=fun1, args=(mainpid,))
- # 不能像下面一行这样将子进程设置为守护进程,否则主进程结束后子进程也跟着结束,一样不能输入
- # 如果一定要用这句设置守护进程,那主进程应该等待子进程结束,即末尾加 proc1.join()
- # proc1.daemon = True
- proc1.start()
- # proc1.join()
复制代码 |
|