Это вещь: Ctrl+D
не убивает программ, он разрезает ждет на полпути через. Когда вы нажимаете Ctrl+D
, вы прерываете процесс 'read()
вызов, ожидающий ввода.
Ctrl + D
Большинство программ будет прервана, когда они читают 0
байт в качестве входных данных. Если вы введете Ctrl+D
, прежде чем вводить что-либо, вы будете отправлять 0 байтов по входному каналу, и, возможно, вызывают остановку программы, которая может показаться, что ничего не остается. Это не принудительно.
Однако, если вы нажмете несколько клавиш, то Ctrl+D
, вызов, который вы прервали, вернет этот текст, и основная программа решит подождать еще один раунд.
Именно поэтому, когда вы снова набрали Ctrl+D
без ввода какого-либо нового текста, вы получите ожидаемое поведение.
Ваш случай
Это то, что, вероятно, происходит:
Вы набираете какой-то характер, они получают буфер.
Вы Ctrl+D
. Текст достигает iPdb
, но он не обнаруживает новую строку, и, следовательно, он ждет больше.
Вы снова Ctrl+D
. На этот раз 0
байт доходит до iPdb
, что предполагает, что ничего больше не происходит и обрабатывает текст с или без символов новой строки.
@EricLeschinski Да, я вижу это. Хотя я думаю, что это не решает мою проблему, не так ли? – RevMoon