通过STDOUT与运行中的进程通信

1 投票
2 回答
565 浏览
提问于 2025-04-16 12:45

我创建了一个正在运行的程序,它可以接收输入:

listen = Popen(["home/user/listen"], stdout=PIPE, stdin=PIPE)

这个程序会运行并等待从标准输入(STDIN)和标准输出(STDOUT)接收信息。

不过,似乎我无法让它执行我发送给它的任何指令,也就是说,像按“回车”键那样执行,比如:

listen.communicate("Test")

或者

listen.stdout("Test")

它会把字符串写到标准输出,但并不会执行这些指令,我必须手动按“回车”。有没有办法解决这个问题呢?

附注:我指的是 http://docs.python.org/library/subprocess.html

2 个回答

1

在使用 home/user/listen 的时候,它会等到这一行结束吗?如果是的话,你可以在你的命令后面加上 \n,比如 listen.communicate("Test\n")

1

我找到了解决办法:

listen.stdin.write("%s" %input)
listen.stdin.write("\n")

撰写回答