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