2011-09-14 22 views
0

什麼是linux知道文件已關閉的機制? 我知道如INOTIFY這樣的命令會在文件關閉時觸發IN_CLOSE_WRITE事件。但它是如何工作的?什麼觸發文件關閉?內核知道文件是如何關閉的

同樣,操作系統如何知道文件已被打開以及它在哪裏註冊該事實?

回答

2

操作系統(即內核)是實際打開和關閉文件之一。程序將不得不通過系統調用來通知操作系統代表其打開/關閉文件。操作系統可以簡單地跟蹤這些經歷過的呼叫。

+0

謝謝。讓我用一個例子來問我的具體問題:假設我在/ tmp目錄中的服務器A上啓動FTP進程。我使用PYINOTIFY,IN_CLOSE_WRITE事件來觀察目錄。當FTP成功完成時,IN_CLOSE_WRITE被觸發。但即使由於任何原因FTP中途失敗,也會觸發IN_CLOSE_WRITE事件。操作系統知道FTP進程不再寫入文件的機制是什麼(相比之下,高延遲的ftp進程仍在寫入文件但延遲非常大)? –

+0

@A J:你確定FTP服務器在一次寫入之後沒有手動關閉文件嗎? –

+0

當前Linux內核存儲哪些文件被打開? –

相關問題