2015-06-16 2 views
0

Я работаю над встроенной системой Busybox, работающей под управлением Python 2.7.Не удается увидеть ввод с клавиатуры после «killall python»

Всякий раз, когда я убиваю Python с использованием

killall python 

, пока я сбегаю интерактивную оболочку Python будущих экземпляры интерактивного разрыва оболочки Python для этой сессии.

Так, например, У меня есть ssh-соединение с устройством, которое в настоящее время запускает оболочку python. Теперь я использую «killall python» из другой оболочки. Оболочка на первом ssh-соединении закрывается (как и ожидалось) с сообщением «Terminated». До сих пор все это ожидалось.

Теперь я снова использую команду «python» в той же оболочке, где у меня была последняя оболочка python. Теперь я получаю ненормальное поведение в том смысле, что ни один мой ввод не отображается.

Так, например, если я обычно введите «печать („тест“)» Я вижу это:

>>> print('test') 
test 
>>> 

Если я сделать то же самое после убийства питона я вижу это:

>>> test 
>>> 

Итак, как вы видите, мой вход («print ('test') \ n") не отображается, как ожидалось. Все выходы программы видны.

Чтобы исправить это, я должен закрыть соединение (например, соединение ssh) и запустить его снова. Это влияет только на соединения, в которых была запущена оболочка python, когда я использовал команду killall. Поэтому, если есть несколько соединений ssh, на них влияют только те, у которых был python, запущенный во время команды killall.

Не имеет значения, использую ли я «killall» или просто «kill [PID]», результат тот же.

Кто-нибудь знает, что вызывает это и как это исправить?

+3

Не 'killall python', а' kill PID'. –

+0

Такая же история здесь. Пробовал это прямо сейчас, нет никакой разницы, могу ли я использовать killall или kill – Dakkaron

+0

Для чего был downvote? – Dakkaron

ответ

2

«Локальное эхо» - печатный ввод, который вы вводите - это настраиваемая терминальная настройка. Вы получаете свой терминал в состояние, в котором он выключен. (Это может легко произойти, если программа выходит из строя при запросе ввода пароля, что является особым обстоятельством, когда обычно отключается локальное эхо по соображениям безопасности).

Чтобы полностью перезагрузить терминал в известном состоянии, запустите stty sane перед перезапуском Python. Чтобы включить только локальное эхо, запустите stty echo.

+0

Это исправлено. Большое спасибо! – Dakkaron