LINUX.ORG.RU

заблокирова файл


0

0

Подскажите пожалуйста как в программе на Си заблокировать файл, чтобы
в него мог писать только один процесс (а если он уже заблокирован,
то ждать пока не разблокируют). Это то или не то? :

flock(descriptor,LOCK_EX); ?

P.S. файл открывает родительской процесс, который форкает несколько
дочерних процессов, которые должны заблокировать файл, записать туда,
и разблокировать.

Заранее благодарен за помощь.
anonymous

man flock

man lockf

man fcntl

особенно обрати внимание на последнюю и имей ввиду что ты должен юзать *небуферизованный* ввод/вывод

cvv ★★★★★
()
Ответ на: комментарий от cvv

А если я буду использовать flock(), и один из процессов вызовет ее для блокировки файла, который уже заблокировн другим процессом - что будет ? Он зависнет и будет ждать, пока не синмут блокировку с файла, тогда он его заблокирует и продолжит работу ? Если нет, то как это сделать ?

anonymous
()
Ответ на: комментарий от anonymous

>А если я буду использовать flock(), и один из процессов вызовет ее для блокировки файла, который уже заблокировн другим процессом - что будет ? Он зависнет и будет ждать, пока не синмут блокировку с файла, тогда он его заблокирует и продолжит работу ? Если нет, то как это сделать ?

man flock:

...

A call to flock() may block if an incompatible lock is held by another process.

To make a non-blocking request, include LOCK_NB (by ORing) with any of the above operations.

...

cvv ★★★★★
()
Ответ на: комментарий от cvv

Ага, я это прочитал, но все же решил уточнить :)

anonymous
()
Ответ на: комментарий от anonymous

да так... просто у нас на курсе щас у многих возникла подобная ситуация =). вот эти многие щас и мучаются. уж, было, подумал: не уж то додумались тут спросить?

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