向终端发送命令
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.Popen
或 pexpect
。 运行 parent 在一个新的 xterm
如果你愿意的话;如果它自己不执行任何 I/O,则子进程似乎完全处于控制之中。
Stack Overflow subprocess
tag info page 有几个链接指向有关如何与 运行ning 子进程交互的问题。
我想将一些命令通过管道传输到 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.Popen
或 pexpect
。 运行 parent 在一个新的 xterm
如果你愿意的话;如果它自己不执行任何 I/O,则子进程似乎完全处于控制之中。
Stack Overflow subprocess
tag info page 有几个链接指向有关如何与 运行ning 子进程交互的问题。