2011-09-14 12 views
0

ファイルが閉じられたことをLinuxが知っている仕組みはなんですか? INOTIFYなどのコマンドは、ファイルが閉じられたときにIN_CLOSE_WRITEイベントをトリガーすることがわかりました。しかし、どのように機能するのですか?ファイルのクローズを引き起こすのは何ですか?カーネルはファイルが閉じていることをどのように知っていますか

同様に、OSはファイルが開かれたことを知っていますが、その事実をどこに登録していますか?

答えて

2

をOS(すなわち、カーネルは)実際にファイルを開閉するものです。プログラムは、毎回システムコールによってファイルをオープン/クローズするようにOSに指示する必要があります。 OSは、これらの呼び出しを追跡するだけです。

+0

ありがとうございました。私の具体的なQに例を挙げてみましょう:/ tmpディレクトリのサーバーAでFTPプロセスを開始するとします。 IN_CLOSE_WRITEイベントのPYINOTIFYを使用してディレクトリを監視します。 FTPが正常に完了すると、IN_CLOSE_WRITEがトリガーされます。しかし、何らかの理由でFTPが途中で失敗しても、IN_CLOSE_WRITEイベントがトリガされます。 FTPプロセスがファイルを書き込んでいないことをOSが知っているメカニズムは何ですか(ファイル待ち時間の長いFTPプロセスではなく、ファイル待ち時間が非常に長い)。 –

+0

@A J:書き込みのバースト後にFTPサーバーがファイルを手動で閉じていないことは確かですか? –

+0

現在のLinuxカーネルはどのファイルを開いていますか? –

関連する問題