ftell (stdin) вызывает незаконную ошибку поиска
Вопрос
Следующий код выводит «Незаконное поиск»:
#include <stdio.h>
#include <errno.h>
#include <string.h>
int main() {
errno = 0;
getchar();
getchar();
getchar();
ftell( stdin );
printf( "%s\n", strerror(errno) );
}
Это происходит, когда я запускаю "Cat Script | ./a.out", а также когда я просто бегу "./a.out". Проблема в Ftell, конечно. Мой вопрос: почему это происходит? Я бы подумал, что Stdin можно искать. Fseek также вызывает ту же ошибку. Если stdin не может искать, есть ли какой -нибудь способ сделать то же самое?
Спасибо за ваши ответы.
Решение
FIFOS не засыщены. Они просто буфер. Как только данные были read()
Из буфера FIFO его никогда не может быть извлечено.
Обратите внимание, что если вы запустили свою программу:
./a.out < script
тогда стандартный вход будет файл а не Фиф, так ftell()
тогда сделает то, что вы ожидаете.
Не связан с StackOverflow