Prima lasciami mostrare cosa funziona. Se utilizzo flock con il percorso del file, funziona.Impossibile bloccare il file utilizzando il flock con il descrittore di file
Terminal 1:
[[email protected] ~]# flock -x -n /tmp/foo.txt -c "sleep 100"
Terminal 2:
[[email protected] ~]# flock -x -n /tmp/foo.txt -c "sleep 100"
[[email protected] ~]# echo $?
1
L'output sopra mostra che ho acquisire un blocco esclusivo /tmp/foo.txt nel primo terminale. Quindi nel secondo terminale, quando provo ad acquisire un blocco sullo stesso file, fallisce.
Ora fammi sapere cosa non funziona. Se uso il flock con il descrittore di file, non funziona.
Terminal 1:
[[email protected] ~]# { flock -x -n 100; sleep 100; } 100> /tmp/foo.txt
Terminal 2:
[[email protected] ~]# { flock -x -n 100; sleep 100; } 100> /tmp/foo.txt
L'output sopra mostra che provo prima di acquisire un blocco sul /tmp/foo.txt
nel primo terminale. Quindi nel secondo terminale, quando provo ad acquisire un blocco sullo stesso file, ci riesce. Mi aspettavo che fallisse proprio come nell'esempio precedente. Perché ha successo?