#!/usr/bin/env python
from subprocess import *
p = Popen(
args=("java","-jar","jmxterm-1.0-alpha-4-uber.jar"),
bufsize=0,
stdin=PIPE,
stderr=PIPE
)
p.stdin.write("open localhost:12345\n")
x = p.stderr.readline()
Для этого требуется процесс java, прослушивающий клиент jmx на порту 12345. Сценарий «работает»: x верен (когда вы его печатаете или смотрите в pdb).
В чем проблема? Когда этот скрипт завершает работу, оболочка ведет себя странно.В Linux и OS-X ввод в оболочке не виден (хотя вывод выводится), а в Windows первые два символа, введенные для каждой команды, игнорируются.Выполнение команды «reset» терминала, похоже, исправляет это, но я не хочу навязывать это пользователям моего скрипта.
Удаление последней строки скрипта (доступ к p.stderr.readline ())устраняет проблему, но также и утилиту скрипта.
Я удалил аутентификацию, чтобы упростить пример.Вы заметите, что я не печатаю x, чтобы исключить запись чего-то неприятного в оболочку как виновника.
Версии: CPython 2.7 на Snow Leopard и различных Linux;CPython 2.6.3 для Windows 7