2011-06-03 138 views
2

Linux對我來說很奇怪,我在考慮如何編寫我的程序來安全地操作Linux文件。 如果我的程序對其他進程正在操作的文件(普通文件或開發文件等)進行操作(打開,讀取或寫入),我應該考慮哪些方面。 你能給我一些想法,或者建議我有用的文章/鏈接?Linux - 同時從文件讀取/寫入

+4

讀你的第一句話,一個可以安全地假設你沒有看到任何東西,但窗口從編程的角度看卻:-)我向你保證,這是很奇怪的窗戶很多方面,所有其他的操作系統(包括linux)都很正常 – hirschhornsalz 2011-06-03 16:33:26

回答

1

一個簡單的規則:如果每個人都在閱讀,讓他們閱讀,但如果有人正在寫作,他們之間總是使用鎖定。有關詳細信息和示例,請參閱flock。 對於unix,即使文件被鎖定文件打開也不會失敗。需要嘗試諮詢鎖定。像這樣的東西會做:

err = lockf(fd, F_TLOCK, 0); 
if (err < 0) 
    /* err = sharing error */; 
+0

可能想提到'flock()'只是建議性的嗎? – dlamotte 2011-06-03 16:59:50

+0

@dlamotte,我不明白。這不足以實現讀寫同步嗎? – 2011-06-03 17:03:17

+0

「羣 - 在打開的文件上應用或刪除諮詢鎖」,即:仍然可以寫入文件,必須使用偵聽鎖的功能和/或在寫入文件之前手動檢查狀態。 – dlamotte 2011-06-03 17:13:39