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