Подскажите по файловому дескриптору?

Есть ли способ сделать то, что делает ftell() (возвратить текущую позицию в файле) в необработанном файловом дескрипторе вместо ФАЙЛА*? Я думаю, что должно быть, так как вы можете искать в необработанном файловом дескрипторе, используя lseek().

Я знаю, что мог бы использовать fdopen() для создания FILE*, соответствующего дескриптору файла, но я бы не стал этого делать.


person HighCommander4    schedule 03.08.2010    source источник


Ответы (1)


Просто используйте:

position = lseek(fd, 0, SEEK_CUR);
person Darron    schedule 03.08.2010
comment
Для длины файла lseek(fd, 0, SEEK_END); - person SF.; 05.02.2019
comment
@SF.Кстати, не лучше ли использовать fstat или lseek для размера файла? - person Yi Lin Liu; 21.02.2019
comment
@СФ. обратите внимание, что это также переместит дескриптор файла в конец файла, если он еще не находится там, что не обязательно вам нужно. - person sagivd; 02.05.2019
comment
@YiLinLiu: кажется, что fstat собирает гораздо больше информации о файле, чем просто размер. Используйте stat, если вы хотите просто узнать о файле, но не открывать его; lseek, если вы открываете файл и вам нужен только размер, fstat, если вы открываете файл и вам нужен не только размер. - person SF.; 03.05.2019