В чем разница между `fseek`, `lseek`, `seekg`, `seekp`?
Интервьюер спросил меня, как бы я tail
(да, тот, в оболочке Linux). Мой ответ был: сначала ищите до конца файла, затем читайте символы один за другим, если встречаете \n
, означает, что одна линия не работает, бла-бла-бла. Я предполагаю, что мой ответ правильный.
Тогда я обнаружил эту проблему, которую искать, я должен использовать для реализации tail
? Я думал, что я могу просто использовать seekg
(C++ вещь?), Но мне сказали, что я должен использовать lseek
(системный вызов Linux?).
Так в том числе fseek
(ANSI C вещь?), Который я должен использовать для реализации tail
? И есть ли большая разница между ними?
1 ответ
Использование seekg
при использовании библиотеки C++ IOstreams. seekp
здесь бесполезно, так как он устанавливает указатель пут.
использование fseek
при использовании библиотеки C stdio. использование lseek
при использовании низкоуровневого файлового дескриптора ввода / вывода POSIX.
Разница между различными функциями поиска заключается только в том, какие объекты файлов / потоков работают с ними. В Linux seekg
а также fseek
вероятно, реализованы с точки зрения lseek
,