ファイルが閉じられたことをLinuxが知っている仕組みはなんですか? INOTIFYなどのコマンドは、ファイルが閉じられたときにIN_CLOSE_WRITEイベントをトリガーすることがわかりました。しかし、どのように機能するのですか?ファイルのクローズを引き起こすのは何ですか?カーネルはファイルが閉じていることをどのように知っていますか
同様に、OSはファイルが開かれたことを知っていますが、その事実をどこに登録していますか?
ファイルが閉じられたことをLinuxが知っている仕組みはなんですか? INOTIFYなどのコマンドは、ファイルが閉じられたときにIN_CLOSE_WRITEイベントをトリガーすることがわかりました。しかし、どのように機能するのですか?ファイルのクローズを引き起こすのは何ですか?カーネルはファイルが閉じていることをどのように知っていますか
同様に、OSはファイルが開かれたことを知っていますが、その事実をどこに登録していますか?
オープンされているストリームと、それらがメモリ内でポイントするストリームをすべて列挙したオープンファイルテーブルがあります。
これが役立つことがあります。http://www.cs.kent.edu/~walker/classes/os.f07/lectures/Walker-11.pdf
をOS(すなわち、カーネルは)実際にファイルを開閉するものです。プログラムは、毎回システムコールによってファイルをオープン/クローズするようにOSに指示する必要があります。 OSは、これらの呼び出しを追跡するだけです。
ありがとうございました。私の具体的なQに例を挙げてみましょう:/ tmpディレクトリのサーバーAでFTPプロセスを開始するとします。 IN_CLOSE_WRITEイベントのPYINOTIFYを使用してディレクトリを監視します。 FTPが正常に完了すると、IN_CLOSE_WRITEがトリガーされます。しかし、何らかの理由でFTPが途中で失敗しても、IN_CLOSE_WRITEイベントがトリガされます。 FTPプロセスがファイルを書き込んでいないことをOSが知っているメカニズムは何ですか(ファイル待ち時間の長いFTPプロセスではなく、ファイル待ち時間が非常に長い)。 –
@A J:書き込みのバースト後にFTPサーバーがファイルを手動で閉じていないことは確かですか? –
現在のLinuxカーネルはどのファイルを開いていますか? –