我需要向我创建的进程写入数据。由于各种原因,这必须是一个multiprocessing.Process
。假设该进程执行类似运行apt upgrade
的操作,然后将提示用户输入[Y/n]。发送Y或n的最佳方法是什么?我已经进行了大量搜索,并找到了许多有关复制stdin的半个答案,但我还没有能够想出完整的解决方案。以下是一个最简示例:
#! /usr/bin/python3
import sys
import multiprocessing
e = multiprocessing.Event()
def get_input():
try:
x = input("Go ahead - type something\n")
print("typed " + x)
finally:
e.set()
# 1. Here it seems we should replace stdin?
multiprocessing.Process(target=get_input).start()
# 2. Here I want to write to stdin such that Process started above receives input
e.wait()
当然,由于使用input的stdin已经关闭并只返回EOF,因此此过程会立即失败。我如何覆盖stdin以从文件或某种本地缓冲区获取输入?