[問題] readlock

作者: SahsB (SahsB)   2015-12-16 16:38:15
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Linux
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
下面有程式碼
想檢查檔案是不是 locked 但輸出不符合預期
餵入的資料(Input):
檔名123的檔案
預期的正確結果(Expected Output):
r
錯誤結果(Wrong Output):
u
程式碼(Code):(請善用置底文網頁, 記得排版)
http://codepad.org/jS57a2Y4
補充說明(Supplement):
write lock 可以正確輸出 w
但 read lock 就是無法輸出 r
不知道是哪裡出錯@@
作者: HolyBugTw (HolyBug)   2015-12-16 16:55:00
你有兩行code一模一樣lock.l_type = F_RDLCK; 為啥check lock2?
作者: SahsB (SahsB)   2015-12-16 17:08:00
我是用lock來上set lock 用lock2來get lock
作者: HolyBugTw (HolyBug)   2015-12-16 17:20:00
嗯...我知道我問了個蠢問題...Orz會不會是你用同一個process才會有這問題?拆開來兩個執行檔試試看如何?我試過了和你狀態一樣...等高人指教了...
作者: yvb   2015-12-16 21:05:00
請 man fcntl 看 F_GETLK 的說明. 補充: F_RDLCK 為 0.另外,如同樓上上所說,同行程可隨意變換,要拆成兩行程來測試.
作者: HolyBugTw (HolyBug)   2015-12-17 09:58:00
哈,我測試他是return 2...所以才說測出一樣的問題所以才想說是不是還有什麼菱角?
作者: jaid (jaid)   2015-12-18 16:07:00
同Process不能GET自己的LOCK,會蓋過去

Links booklink

Contact Us: admin [ a t ] ucptt.com