Как передать ctrl-c в подпроцесс popen, используя аргумент stdinPython

Программы на Python
Ответить
Anonymous
 Как передать ctrl-c в подпроцесс popen, используя аргумент stdin

Сообщение Anonymous »

Я привык запускать команду с помощью subprocess.Popen в своих скриптах Python. Большинству из них нравится:

Код: Выделить всё

   try:
while True:
line = proc.stdout.readline()
if(proc.Poll() is not None):break;
parse(line)
except(KeyboardInterrupt) as E:
kill(proc)
Теперь у меня есть случай, когда команда (инструмент симулятора) получает «CTRL-C» в режим отладки (интерфейс командной строки), чтобы принять инструкции отладки, завершить работу при наличии инструкций и возобновить работу. похоже, что Popen не поддерживает передачу стандартного ввода в аргумент stdin, например stdin=input. Я знаю, что могу использовать os.system(cmd), которая использует стандартный ввод/вывод в качестве ввода/вывода, но это не мое решение.
так кто-нибудь может показать мне другое решение? заранее спасибо.
ПОПРОБУЙТЕ: Как сказал Ахмед АЕК, я попробую:

Код: Выделить всё

proc = Popen(shlex.split(cmd), stdin=sys.stdin, stdout=sys.stdout, stderr=STDOUT)
try:
proc.wait() #how do I get output from stdout
except KeyboardInterrupt:
proc.send_signal(signal.SIGINT)
proc.wait()
Теперь сочетание клавиш CTRL-C (SIGINT) может перевести команду в режим отладки. его функция похожа на os.system(cmd). Но как захватить выходные данные из stdout(sys.stdout) для поиска по некоторым ключевым словам, поэтому я использую не os.system(...), а subprocess.Popen(...)(с использованием proc.stdout.readline(), когда stdout=PIPE).

Подробнее здесь: https://stackoverflow.com/questions/754 ... n-argument
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»