什麼是linux知道文件已關閉的機制? 我知道如INOTIFY這樣的命令會在文件關閉時觸發IN_CLOSE_WRITE事件。但它是如何工作的?什麼觸發文件關閉?內核知道文件是如何關閉的
同樣,操作系統如何知道文件已被打開以及它在哪裏註冊該事實?
什麼是linux知道文件已關閉的機制? 我知道如INOTIFY這樣的命令會在文件關閉時觸發IN_CLOSE_WRITE事件。但它是如何工作的?什麼觸發文件關閉?內核知道文件是如何關閉的
同樣,操作系統如何知道文件已被打開以及它在哪裏註冊該事實?
有一個打開的文件表列出了所有打開的流以及它們在內存中指向的位置。
這可能會幫助:http://www.cs.kent.edu/~walker/classes/os.f07/lectures/Walker-11.pdf
操作系統(即內核)是實際打開和關閉文件之一。程序將不得不通過系統調用來通知操作系統代表其打開/關閉文件。操作系統可以簡單地跟蹤這些經歷過的呼叫。
謝謝。讓我用一個例子來問我的具體問題:假設我在/ tmp目錄中的服務器A上啓動FTP進程。我使用PYINOTIFY,IN_CLOSE_WRITE事件來觀察目錄。當FTP成功完成時,IN_CLOSE_WRITE被觸發。但即使由於任何原因FTP中途失敗,也會觸發IN_CLOSE_WRITE事件。操作系統知道FTP進程不再寫入文件的機制是什麼(相比之下,高延遲的ftp進程仍在寫入文件但延遲非常大)? –
@A J:你確定FTP服務器在一次寫入之後沒有手動關閉文件嗎? –
當前Linux內核存儲哪些文件被打開? –