Чтение / запись одного и того же файла из 2 процессов

У меня есть вопрос относительно чтения текстового файла.
Представьте, что я читаю текстовый файл журнала, который постоянно записывается каким-то другим процессом.
Что произойдет, если другой процесс попытается записать файл точно в то же время, когда я читаю файл. Будет ли моя программа зависать? (Я открыл файл в режиме только для чтения)

Если приведенный выше сценарий приводит к сбою, как работает команда «tail -f»?

Является ли блокировка файла каждый раз, когда я пытаюсь прочитать, хорошим решением?

На самом деле у меня была программа, которая использовала wxTextFile класс для чтения. По умолчанию wxTextFile открывает файл в read/write режим и в некоторых случаях моя программа потерпела крах. Итак, если я использую некоторые функции C и открываю файл в режиме только для чтения, гарантирует ли это, что программа не будет аварийно завершать работу (это нормально, если иногда читается искаженное значение).

1

Решение

Ваш вопрос является своего рода / полностью зависимым от системы. Во-первых, вам нужна система, которая позволяет нескольким читателям / одному писателю. Большинство систем поддерживают это, так что это в значительной степени теоретическое препятствие.

Давайте предположим, что вы можете сделать это.

Вы бы открыли файл для чтения. В каком-то другом процессе он открыт для записи.

Если вы пытаетесь читать одновременно с кем-то другим, это нормально. Единственная проблема заключается в том, что вы пытаетесь прочитать блок, который пишет автор одновременно. По этой причине данные, которые вы получаете, непредсказуемы, но вы должны быть в состоянии прочитать.

Короче говоря, одновременное чтение и запись сами по себе не вызовут сбой программы.

2

Другие решения


По вопросам рекламы [email protected]