我主要使用strace來找出爲什麼進程似乎被吊死,並且它非常有效。但是現在我正在使用它來分析爲什麼某些鎖定在c程序中似乎不起作用。當我在實際的問題程序上運行它時,我看到每個進程都使用fcntl鎖定某個文件,並且該選項應該讓遲到進程等待上一個進程解鎖。 strace似乎表明,即使鎖定到位,每個進程也會繼續進行。strace「亂序」
但是,我製作了自己的c程序來分叉4個進程,如果進程是子進程,它將鎖定/tmp/test.txt,向其中添加幾行,然後解鎖文件。然後我用strace運行它,並且我看到按照我認爲不可能的順序排列的結果。再次,通過strace,每個進程似乎都通過fcntl鎖進行,即使另一個進程已經鎖定了它。另外,每個進程似乎在該進程完成解鎖後寫入文件。
流程運行過程中似乎存在某種程度的複雜性,我在查找文檔時遇到了問題。有人能幫助我走上正確的軌道嗎?
順便說一句,我已經檢查了使用的fcntl命令,它們似乎是非常標準的用法,並且每個參數都與文檔一起檢查。我使用的是Centos 6.6。
謝謝Nithan。我正在重新檢查strace中的時間。老腦電路慢慢醒來。 – Scott