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