開いたファイルが別のプログラムによって移動されたときに、プログラムはそのファイルの処理を続行できますか? [コピー]

開いたファイルが別のプログラムによって移動されたときに、プログラムはそのファイルの処理を続行できますか? [コピー]

あるプログラムがファイルを開き、別のプログラムが別のパス/ファイル名を持つようにファイルを移動すると、できる最初のプログラムは、ファイルの内容や属性を変更し、変更をファイルに保存するなど、ファイルの操作を続けますか?

そうだと思います。

  • ファイルが移動されると、パス名/ファイル名は異なりますが、まだ同じinodeとデータブロックを持ちます。

  • プログラムがファイルを開くと、ファイルのパス名/ファイル名は対応するinodeとデータブロックを見つけるために使用され、プログラムはファイルのinodeとデータブロックのデータ構造へのポインタを直接間接的に保存します。照会後もパス名/ファイル名がまだ役に立つかどうかはわかりません。

答えが「はい」の場合、予想されるfromprograms、そのようなプログラムを作成したいと思いますか?

  • 移動したファイルを自動的に処理するかどうか、
  • ユーザーに移動の事実を知らせ、移動したファイルの処理を続行するかどうかを尋ねる必要がありますか?

私はしばしばファイルをできるだけ長くいくつかのプログラムmv(emacs、いくつかのpdfソフトウェア)で開いたままにしていますが、他のプログラム(emacs、いくつかのpdfソフトウェア)を使用して同時に特定の時点でファイルを移動または名前変更するのに十分な長さを維持します。します。 Emacsでファイルが移動されたことを警告しますが、Emacsで移動されたファイルを処理し続ける可能性があるため、通常はバッファを閉じて移動したファイルを新しいバッファに再度開く必要がありますが、これは不便だと思います。

ありがとうございます。

ベストアンサー1

開いたファイルはLinuxシステムでどのように機能しますか?いくつかの関連する背景が提供されます。

できる最初のプログラムは、ファイルの内容や属性を変更し、変更をファイルに保存するなど、ファイルの操作を続けますか?

最初のプログラムがファイル記述子を開いたままである限り、そのファイル記述子を使用するシステム呼び出しまたはライブラリ関数を使用してファイルを変更し続けることができます。ファイルが同じファイルシステムの別のディレクトリに移動されると、変更は「新しい」ファイルに適用されます。別のファイルシステムに移動すると、他のディレクトリエントリが同じinodeを指していない場合、変更は最終的に失われます。 。

ファイルが移動されると、パス名/ファイル名は異なりますが、まだ同じinodeとデータブロックを持ちます。

同じファイルシステム内を移動した場合は、そうです。

プログラムがファイルを開くと、ファイルのパス名/ファイル名は対応するinodeとデータブロックを見つけるために使用され、プログラムはファイルのinodeとデータブロックのデータ構造へのポインタを直接間接的に保存します。照会後もパス名/ファイル名がまだ役に立つかどうかはわかりません。

はい、カーネルの助けを借りて、プログラムには、カーネルが維持するファイル記述を指すファイル記述子があります。ファイル名は重要ではありません。

答えが「はい」の場合、予想されるfromprograms、そのようなプログラムを作成したいと思いますか?

何もない予想される。一部のプログラムは、ファイルへの更新の書き込みを含むファイル操作中にファイルを開き、返されたファイル記述子を保持します。他の人はファイルを開き、返されたファイル記述子を保持しますが、Emacsを含むファイルへの書き込みにはより複雑な書き込み - 名前変更モードを使用します。 Emacsはまた、開いているファイルの外部変更を監視し、そのような変更について警告します。

結局彼らあなたのファイルを使用して実行する操作を追跡することは、ユーザーによって異なります。一部のプログラムはデータの損失を防ぐために多くの努力をしていますが、他のプログラムはそうではありません。

おすすめ記事