向终端发送命令

Sending commands to terminal

我想将一些命令通过管道传输到 Xterm window 中,该 Xterm window 由我的 python 程序打开。 我在 Linux 并使用子进程与终端通信

import subprocess

subprocess.run("xterm -e python3 main.py",shell=True)

这将打开一个 xterm window 并运行脚本,在我使用子进程模块调用的 main.py 文件中包含以下代码:

import time

while True:
    try:
        print("Me is running")
        time.sleep(5)
    except KeyboardInterrupt:
        print("Stoped:(")
        break

我想向 linux 终端发出命令。

因此,如果我在终端上按 Ctrl+c,它应该在 xterm 上打印 Stopped:(

我认为不可能 运行 使用子进程在 xterm 或 cmd 上执行命令。 子进程用于直接执行程序。不是来自 cmd 或 xterm。而且 cmd 或 xterm 不接受任何参数

运行在 xterm 中设置子进程会使您脱离其输入和输出文件描述符。无论如何,run 调用将阻塞直到子进程终止。

更好的解决方案是 运行 将子流程作为直接 child 与 subprocess.Popenpexpect。 运行 parent 在一个新的 xterm 如果你愿意的话;如果它自己不执行任何 I/O,则子进程似乎完全处于控制之中。

Stack Overflow subprocess tag info page 有几个链接指向有关如何与 运行ning 子进程交互的问题。