Всякий раз, когда процесс сильно печатает на stdout
, если я попытаюсь kill
процесс через отправку сигнала "ctrl + c"
, процесс не останавливается сразу. Но если я перенаправляю вывод в файл, процесс немедленно останавливается, если я нажимаю "ctrl +c"
. Infact Если я использую GNU screen
, и мой процесс сильно влияет на stdout
, то я не могу переключить tab
а также. Почему такое поведение
Процесс может генерировать выходные данные намного быстрее, чем их может отобразить комбинация сети и экрана.
Когда ты ударил ctrl-C этой ключевой последовательности может потребоваться некоторое время, чтобы добраться до сервера, на котором выполняется процесс, из-за перегрузки сети, вызванной всеми выходными данными; и когда процесс завершается, может пройти значительное время, прежде чем весь уже сгенерированный вывод будет отправлен на экран из-за буферизации в различных местах: во-первых, сетевой буфер на сервере, буферы пакетов в пути, например, маршрутизаторы, входная сетевая очередь в системе отображения, а затем входной буфер ssh / screen / X windows (в зависимости от того, где вы работаете screen
).
Когда используешь screen
переключение вкладок имеет в основном ту же проблему: ctrl-АА последовательность может быть задержана на пути к серверу, тогда screen
может немедленно переключить отображаемый терминал, но это становится видимым только после того, как все, что уже находится в конвейере, отображается в вашей локальной системе.