Sto leggendo per ore ma non riesco a capire quale sia la differenza tra tra le due serrature. L'unica cosa che capisco è che il blocco fcntl()
offre un blocco granulare che può bloccare specifici byte e che solo fcntl()
supporta il blocco NFS.Qual è la differenza tra il blocco con `fcntl` e` flock`?
Si dice che la differenza sia nella loro semantica, come si comportano quando vengono duplicati da dup()
o mentre fork()
, ma non riesco a capire quale sia la differenza nella pratica.
mio scenario è che sto scrivendo un file di log su un server basato su fork()
, dove ogni processo biforcuta sta scrivendo allo stesso file quando qualcosa accade. Perché dovrei voler usare flock()
e perché dovrei voler usare i lucchetti fcntl()
?
Domanda precedente trovata per Linux. La risposta interessante menziona anche Posix. http://stackoverflow.com/questions/22409780/flock-vs-lockf-on-linux –
'flock()' e 'lockf()' sono due cose diverse, 'lockf()' di solito include 'fcntl()' e stavo chiedendo quali sono esattamente la semantica (comportamento rispetto alla chiusura e al passaggio). – Quaker
La risposta che ho collegato inizia * "La differenza pratica tra flock() e lockf() è nella semantica (comportamento rispetto a chiusura e passaggio)" * e come 'lockf()' può racchiudere 'fcntl()' forse che la risposta è pertinente. –