その中に新しいファイルを作成するときに、なぜディレクトリの変更の変更時刻(CTIME)をしますか?

ローランド:

よると、ドキュメント

変更時間(CTIME)などのパーミッションや所有者など、ファイルのメタデータが変更されました。このマーク。これはまた、いくつかのドキュメントの「更新」時間として知られています。

私はディレクトリに新しいファイルを作成して実行すると、まだistatディレクトリ上でコマンドを後で私は、ディレクトリのctimeの別名「更新」時間が変更されたことに気づきます。私は、ディレクトリのメタデータを変更した場合のctimeにのみ変更する必要があることを考えましたか?

アレックス:

よるSTAT()システムコールの仕様:

stat構造体に書き込む前に、(XBDファイルタイムズアップデートで説明したように)のstat()関数は、任意の時間関連フィールドを更新するものとします。

対応するには、ファイル・タイムズ更新文書:

(データが変化しない場合であっても)変更ファイル状態または実行操作(ファイルの状態が変化しない場合であっても)でなければならない適切なタイムスタンプのかを示すデータを読み出し又は書き込みPOSIX.1-2017における各関数またはユーティリティ更新用にマーク。

リストPOSIXシステムコールは、ディレクトリ内のオブジェクトの作成に関連する次の呼び出しが含まれています。

  • リンク()

    正常に終了すると、リンク()更新用ファイルの最後のファイルのステータス変更のタイムスタンプをマークするものとします。また、新しいエントリを含むディレクトリの最後のデータ変更と最後のファイルのステータス変更のタイムスタンプは、更新のために表示しなければなりません。

  • MKDIR()

    正常に完了すると、MKDIR()更新のために、最後のデータ・アクセス、最後のデータ変更、およびステータスの変更は、ディレクトリのタイムスタンプの最後のファイルをマークするものとします。また、新しいエントリを含むディレクトリの最後のデータ変更と最後のファイルのステータス変更のタイムスタンプは、更新のために表示しなければなりません。

  • mkfifo()

    正常に終了すると、はmkfifo()更新のためにファイルの最後のデータ・アクセス、最後のデータ変更、および最後にファイルのステータス変更のタイムスタンプをマークするものとします。また、新しいエントリを含むディレクトリの最後のデータ変更と最後のファイルのステータス変更のタイムスタンプは、更新のために表示しなければなりません。

  • mknod()

    正常に完了すると、mknodを()更新のために、最後のデータ・アクセス、最後のデータ変更、およびステータスの変更は、ファイルのタイムスタンプを最後のファイルをマークするものとします。また、新しいエントリを含むディレクトリの最後のデータ変更と最後のファイルのステータス変更のタイムスタンプは、更新のために表示しなければなりません。

  • 開いた()

    O_CREATが設定され、ファイルが以前に正常に完了すると、存在しなかった場合は、オープン()更新のために、最後のデータ・アクセス、最後のデータの変更、およびファイルの最後のファイルのステータス変更のタイムスタンプと最後のデータ変更と最後のファイルのステータスをマークしなければなら変更は、親ディレクトリのタイムスタンプ。

  • シンボリックリンク()

    正常に完了すると、シンボリックリンク()更新のためのシンボリックリンクの最後のデータ・アクセス、最後のデータ変更、および最後にファイルのステータス変更のタイムスタンプをマークするものとします。また、新しいエントリを含むディレクトリの最後のデータ変更と最後のファイルのステータス変更のタイムスタンプは、更新のために表示しなければなりません。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=24594&siteId=1