子进程无法从其他进程获取stdin输入

2024-05-13 19:10:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用subprocess在两个进程之间交换数据

我使用以下内容编辑repeat.py文件:

此文件是来自http://www.doughellmann.com/PyMOTW/subprocess/的示例

import sys

sys.stderr.write('repeater.py: starting\n')
sys.stderr.flush()

while True:
    next_line = sys.stdin.readline()
    if not next_line:
        break
    sys.stdout.write(next_line)
    sys.stdout.flush()

sys.stderr.write('repeater.py: exiting\n')
sys.stderr.flush()

并在ipython中运行此文件

^{pr2}$

为什么没有定义teststs?在


Tags: 文件数据py编辑进程stderrstdoutsys
2条回答

您似乎正在启动一个交互式Python会话,而不是运行repeat.py。尝试删除shell=True,它与参数列表一起没有意义。(顺便说一句,使用shell=True几乎总是个坏主意。)

在最初的5次按键操作中会出现一些奇怪的行为。我不知道为什么。之后,如果工作正常,并且我们可以访问ls -lcd,当按UP键时,以前的命令行似乎有完整的功能。在

#!/bin/python3

import subprocess
import sys

proc = subprocess.Popen(['bash'])
while True:
    buff = sys.stdin.readline()
    stdoutdata, stderrdata = proc.communicate(buff)
    if( stdoutdata ):
        print( stdoutdata )
    else:
        print('n')
        break

Here是我类似的问题。在

相关问题 更多 >