C linux внутренняя разница между O_WRONLY и O_RDWR, если только запись - PullRequest
3 голосов
/ 13 ноября 2011

Я знаю, что open предлагает следующие взаимоисключающие флаги: O_RDONLY, O_WRONLY и O_RDWR.

Я хочу знать: есть ли какие-либо проблемы с производительностью (даже если это всего лишь доли секунды) или другие способы обработки файла, если файл открывается как O_RDWR и

  • Я пишу только в файл. (По сравнению с открытием как O_WRONLY)
  • Я только читаю данные из файла. (По сравнению с открытием как O_RDONLY)

1 Ответ

5 голосов
/ 13 ноября 2011

Во-первых, вы, похоже, опечатали (перевернули) в двух случаях вашего описания теги записи / чтения.Что касается того, что вы спрашиваете, VFS в своих различных структурах отслеживает требуемые права доступа с помощью флагов.Флаг чтения / записи обычно является другим битом в одном и том же флаге (мульти), байте.Когда процесс запрашивает доступ в режиме чтения или записи, ядро ​​проверяет, имеет ли оно запрошенные права доступа, и выполняет соответствующие действия.Поскольку установка 2 битов не увеличивает время выполнения, вы не должны видеть разницы, так как более поздний доступ такой же.Использование правильного тега - это просто хороший стиль и часть защиты файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...