LINUX.ORG.RU

Вопрос по доступу к файлам.


0

0

Что будет происходить в следующей ситуации?

Один процесс открыл файл для добавления (fopen(file,"a"))
Другой процесс в это время пытается открыть этот же файл, но для чтения.

И наоборот.



★★★★

тут как я понял чисто исследовательское любопытство (как в том анекдоте про японскую бензопилу и хмурых русских мужиков, которые испытывали эту бензопилу с наивным интересом вопрошая "когда ж оно сломается?!")

короче, байда будет. каждый, открывший файл создаст у себя свой локальный буфер чтения/записи и свой указатель текущего местоположения в файле. пока эти указатели не "пересекутся" (это не совсем корректное слово) и пока читающий указатель будет "меньше" пишущего, то есть шанс. если эти условия нарушаются - то будет бо-бо.. процесс не свалится - вернется ошибка чтения/записи. придется откатываться и повторять попытку еще раз - это уже геморой, который лечится локированием файла (как лаконично и заметил SadStork)

laban
()

В общем-то интерес был не только исследовательским.
У меня реализован общий файловый кэш между процессами.
Я думал, что если будут подоные проблемы разрулить через семафоры, но тут услышал про flock. Я все честно прочитал несколько раз :)
Объясните, как я понял, если я залочу дескриптор, то другой процесс заблокируется на read/write пока я не разлочу его?

Dead ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.