Как предотвратить переключение между приложениями?

Posix определяет стандартные потоки таким образом :

При запуске программы должны быть предопределены три потока, и их не нужно открывать явно: стандартный ввод (для чтения обычного ввода), стандартный вывод (для записи обычного вывода) и стандартный вывод ошибок (для записи диагностического вывода). При открытии стандартный поток ошибок не полностью буферизуется; потоки стандартного ввода и вывода полностью буферизуются тогда и только тогда, когда можно определить, что поток не относится к интерактивному устройству.

Библиотека GNU C описывает стандартные потоки аналогичным образом:

Переменная: ФАЙЛ * stdout
Стандартный поток вывода, который используется для обычного вывода. из программы.

Переменная: ФАЙЛ * stderr
Стандартный поток ошибок, который используется для сообщений об ошибках и диагностики, выдаваемых программой.

Таким образом, стандартные определения содержат мало указаний по использованию потока, помимо «обычного / нормального вывода» и «вывода диагностики / ошибок». На практике обычно перенаправляют один или оба этих потока в файлы и конвейеры, где индикаторы выполнения будут проблемой.Некоторые системы даже отслеживают вывод stderr и считают это признаком проблем. Таким образом, чисто вспомогательная информация о ходе выполнения проблематична в любом из потоков.

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

Для некоторых очень простых сообщений о ходе выполнения («Запуск X» ... «Готово с X») более разумно включать вывод даже для неинтерактивных потоков. В этом случае подумайте, как пользователи могут взаимодействовать с потоками, например, поиск с помощью grep или поиск по страницам с помощью less или мониторинг с помощью tail -f . Если имеет смысл видеть сообщения о ходе выполнения в этих контекстах, их будет намного легче использовать из stdout .

1
23.09.2017, 20:01
0 ответов

Теги

Похожие вопросы