В чем разница между блокировкой с `fcntl` и` flock`?
Я читаю часами, но не могу понять, что эторазница между двумя замками. Единственное, что я понимаю, это то, чтоfcntl()
lock предлагает гранулярную блокировку, которая может блокировать определенные байты и которая толькоfcntl()
поддерживает блокировку NFS.
Говорят, что разница в их семантике, как они ведут себя, когда дублируютсяdup()
или покаfork()
, но я не могу понять, в чем разница на практике.
Мой сценарий заключается в том, что я пишу в файл журнала вfork()
сервер, где каждый разветвленный процесс записывает в тот же файл, когдачто-то случается. Почему я хочу использоватьflock()
и почему я хочу использоватьfcntl()
замки?