c - проверить, когда ничего не передается на стандартный ввод - PullRequest
4 голосов
/ 11 февраля 2011

Обычно я пытаюсь проверить, находится ли что-либо в stdin при вызове программы, поэтому, если у меня есть другой файл с именем output, который записывает в stdout, тогда ./output | ./program должен работать и ./program должен завершиться с ошибкой

Ответы [ 2 ]

6 голосов
/ 11 февраля 2011

В POSIX вы можете использовать isatty.

2 голосов
/ 12 февраля 2011

isatty проверяет tty, не трубу. Вместо этого используйте fstat(STDIN_FILENO, &sb) и проверьте на S_ISFIFO(sb.st_mode).

Чтобы проверить, есть ли что-либо "в" stdin, которое вы могли бы прочитать, вы используете, например, poll(2) с маской события POLLIN.

...