LINUX.ORG.RU

[C] Open() Посоветуйте- флаги для совместного доступа аналог O_DENYNONE, и аналог lock()

 


0

0

Перевожу прогу, бывшую на Борланде

Использует двоичные файлы с общим доступом и на чтение и на запись Может кто посоветует, какие указывать флажки при вызове open(...) И что будет по умолчанию в отсутствие 3-го параметра? Всем все разрешено? или наоборот запрещено?

Связанный с этой проблемой вопрос - чем заменить функции lock() и unlock() - для блокирования участка этих файлов, ну или пусть всего файла


Двоичный/текстовый без разницы. На чтение/запись это O_RDWR. И лучше не указывать флаг O_CREAT, если не указали mode, ИМХО, там права доступа к файлу будут зависеть от реализации libc. Ну не забывайте, что есть umask.

А по поводу блокировки, я не помню, как работали lock()/unlock() в Борланде, но вроде там была mandatory блокировка, то есть доступ к файлу блокировался всем приложениям, а в Линуксе блокировка advisory, то есть доступ к файлу блокирется только для приложений, которые пожелали узнать, а не заблокирован ли файл http://www.opennet.ru/base/dev/lock_review.txt.html . Поэтому посмотрите по исходнику программы, зачем используется блокировка.

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