Я пишу программу на C, которая выводит stdout
, а ошибки — stderr
. Программа принимает такую команду, как:
./myprogram function_to_run file_to_read
Моя программа может либо выводить на stdout
, либо быть направлена на вывод файла, но она не должна быть перенаправлена на /dev/null
. Например:
./myprogram function_to_run file_to_read //OK
./myprogram function_to_run file_to_read > file.txt //OK
./myprogram function_to_run file_to_read > /dev/null // NOT OK, should produce error in stderr
Я пытался использовать isatty(1)
, но он может только определить, выводит ли stdout
на терминал. Следовательно, это не работает для случая, когда stdout
перенаправляется в файл, что приемлемо в моем случае.
Есть ли способ проверить это в C? Если нет, есть ли какие-либо предложения, как я могу проверить сценарий /dev/null?
/tmp/junk
, а затем кrm /tmp/junk
. Или просто немного запутать./myprogram | cat > /dev/null
. - person Thilo   schedule 26.01.2016/dev/null
, я полагаю, вы могли бы это сделать, но это исключило бы возможное допустимое использование программы. В принципе, вы почти наверняка не должны этого делать. - person Jonathan Leffler   schedule 26.01.2016