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

Да, отображать сообщение на stderr , когда используются неправильные аргументы.И если это также приводит к завершению работы приложения, выйдите с ненулевым статусом выхода.

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

Многие оболочки (все?) Отображают запросы, то, что вводит пользователь, и меню и т. Д. На stderr , так что перенаправление stdout не помешает вам взаимодействовать с оболочкой в осмысленный способ.

Следующее взято из сообщения в блоге по этой теме:

Это цитата Дуга Макиллроя, изобретателя каналов Unix, объясняющего, как появился stderr . «v6» относится к версии конкретной версии исходной операционной системы Unix, выпущенной в 1975 году.

Все программы помещали диагностику на стандартный вывод. Это всегда вызывало проблемы, когда вывод перенаправлялся в файл, но становился невыносимым, когда вывод отправлялся ничего не подозревающему процессу. Тем не менее, не желая нарушать простоту модели «стандартный ввод-стандартный-вывод», люди терпели такое положение вещей до версии 6. Вскоре после этого Деннис Ричи разрубил гордиев узел, представив стандартный файл ошибок. Этого было недостаточно. С помощью конвейеров диагностика может происходить из любой из нескольких программ, работающих одновременно. Диагностика необходима, чтобы идентифицировать себя.
- Дуг Макиллрой, "Читатель UNIX-исследований: Аннотированные выдержки из Руководства программиста, 1971-1986"

"идентифицировать себя" означает просто сказать: "Эй! Это я говорю! неправильно: [...] ":

$ ls nothere
ls: nothere: No such file or directory

Выполнение этого на stderr предпочтительнее, поскольку в противном случае это могло бы быть прочитано тем, что читало на stdout (но мы не Мы все равно не сделаем это с ls , не так ли?).

2
01.10.2017, 19:18
0 ответов

Теги

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