У меня есть вопрос относительно чтения текстового файла.
Представьте, что я читаю текстовый файл журнала, который постоянно записывается каким-то другим процессом.
Что произойдет, если другой процесс попытается записать файл точно в то же время, когда я читаю файл. Будет ли моя программа зависать? (Я открыл файл в режиме только для чтения)
Если приведенный выше сценарий приводит к сбою, как работает команда «tail -f»?
Является ли блокировка файла каждый раз, когда я пытаюсь прочитать, хорошим решением?
На самом деле у меня была программа, которая использовала wxTextFile
класс для чтения. По умолчанию wxTextFile открывает файл в read/write
режим и в некоторых случаях моя программа потерпела крах. Итак, если я использую некоторые функции C и открываю файл в режиме только для чтения, гарантирует ли это, что программа не будет аварийно завершать работу (это нормально, если иногда читается искаженное значение).
Ваш вопрос является своего рода / полностью зависимым от системы. Во-первых, вам нужна система, которая позволяет нескольким читателям / одному писателю. Большинство систем поддерживают это, так что это в значительной степени теоретическое препятствие.
Давайте предположим, что вы можете сделать это.
Вы бы открыли файл для чтения. В каком-то другом процессе он открыт для записи.
Если вы пытаетесь читать одновременно с кем-то другим, это нормально. Единственная проблема заключается в том, что вы пытаетесь прочитать блок, который пишет автор одновременно. По этой причине данные, которые вы получаете, непредсказуемы, но вы должны быть в состоянии прочитать.
Короче говоря, одновременное чтение и запись сами по себе не вызовут сбой программы.