Очевидно, что сообщения об ошибках должны идти на stderr
, потому что вы не хотите перехватывать их при перенаправлении стандартного вывода.
Когда использование отображается из-за того, что какой-либо параметр командной строки использовался неверно, он отображается как (часть) сообщения об ошибке. Таким образом, он должен перейти к stderr
и вызвать EXIT_FAILURE
.
Когда использование отображается, потому что пользователь запросил его через --help
, оно отображается как желаемое поведение при вызове команды. Таким образом, он должен перейти к stdout
, и команда должна завершиться успешно с EXIT_SUCCESS
.
Это кратко описано в стандартах кодирования GNU .