我想在替换我当前的Python进程的标准输入中写一些东西。是否有捷径可寻?我一直在思考
import sys, os
r, w = os.pipe()
os.write(w, 'yo')
os.dup2(r, sys.stdin.fileno())
os.execvp('cat', [''])
但是当我在OS X中执行此操作时,尽管显示'yo',但cat仍然挂起。为什么?
您-子流程os.fork()
之前execvp()
的流程;然后,父级将写入管道,而子级则从管道读取数据。父级也必须close()
在之后读取管道的一端fork()
,而子级也必须dup2()
在之前读取管道的一端stdin
,然后关闭之前的两个原始管道手柄execvp()
。这是相当标准的Unix管道内容。
例如:
r, w = os.pipe()
if os.fork() == 0:
# Child process
os.dup2(r, sys.stdin.fileno())
os.close(r)
os.close(w)
os.execvp(...)
else:
# Parent process
os.close(r)
os.write(w, 'yo')
...
os.close(w) # When done writing
os.wait()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句