В чем разница между `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,

Другие вопросы по тегам