python:使用子进程发送命令

时间:2017-02-07 13:38:23

标签: python subprocess

我正在使用ipmitool在HP的VSP上启动串行LAN连接。我正在尝试使用字母c发送break命令。

p = subprocess.Popen(CMD + " sol activate", shell=True, stdout=subprocess.PIPE)
#I want to send '~~B' and 'c' while watching the output.
while True:
    output = p.stdout.readline()
    if output:
        print output

1 个答案:

答案 0 :(得分:2)

据我所知,您需要按“c”按钮来终止您使用子进程运行的进程。使用此recipe来检测键并编写简单函数以在这样的线程内调用:

import subprocess
import os
import signal
import thread
from getch import _Getch

def kill(pro):
    if _Getch()() == "c":
        os.killpg(os.getpgid(pro.pid), signal.SIGTERM)

CMD="sudo apt-get update"
p = subprocess.Popen(CMD, shell=True, stdout=subprocess.PIPE)
thread.start_new_thread(kill, (p,))
while True:
    output = p.stdout.readline()
    if output:
        print output