首先讓我說明什麼可行。如果我在文件路徑中使用flock,它將起作用。無法使用文件描述符使用羣集來鎖定文件
端子1:
[[email protected] ~]# flock -x -n /tmp/foo.txt -c "sleep 100"
端子2:
[[email protected] ~]# flock -x -n /tmp/foo.txt -c "sleep 100"
[[email protected] ~]# echo $?
1
以上顯示我首先在第一終端獲取關於/tmp/foo.txt的排他鎖。然後在第二個終端中,當我嘗試獲取同一個文件上的鎖時,它會失敗。
現在讓我知道什麼是行不通的。如果我使用文件描述符羣,它不起作用。
端子1:
[[email protected] ~]# { flock -x -n 100; sleep 100; } 100> /tmp/foo.txt
端子2:
[[email protected] ~]# { flock -x -n 100; sleep 100; } 100> /tmp/foo.txt
以上顯示我首先嚐試在所述第一終端上/tmp/foo.txt
獲取鎖。然後在第二個終端中,當我嘗試獲取對同一個文件的鎖定時,它會成功。我預料它會失敗,就像前面的例子一樣。它爲什麼成功?