あるプログラムがファイルを開き、別のプログラムが別のパス/ファイル名を持つようにファイルを移動すると、できる最初のプログラムは、ファイルの内容や属性を変更し、変更をファイルに保存するなど、ファイルの操作を続けますか?
そうだと思います。
ファイルが移動されると、パス名/ファイル名は異なりますが、まだ同じinodeとデータブロックを持ちます。
プログラムがファイルを開くと、ファイルのパス名/ファイル名は対応するinodeとデータブロックを見つけるために使用され、プログラムはファイルのinodeとデータブロックのデータ構造へのポインタを直接間接的に保存します。照会後もパス名/ファイル名がまだ役に立つかどうかはわかりません。
答えが「はい」の場合、予想されるfromprograms、そのようなプログラムを作成したいと思いますか?
- 移動したファイルを自動的に処理するかどうか、
- ユーザーに移動の事実を知らせ、移動したファイルの処理を続行するかどうかを尋ねる必要がありますか?
私はしばしばファイルをできるだけ長くいくつかのプログラムmv
(emacs、いくつかのpdfソフトウェア)で開いたままにしていますが、他のプログラム(emacs、いくつかのpdfソフトウェア)を使用して同時に特定の時点でファイルを移動または名前変更するのに十分な長さを維持します。します。 Emacsでファイルが移動されたことを警告しますが、Emacsで移動されたファイルを処理し続ける可能性があるため、通常はバッファを閉じて移動したファイルを新しいバッファに再度開く必要がありますが、これは不便だと思います。
ありがとうございます。
答え1
開いたファイルはLinuxシステムでどのように機能しますか?いくつかの関連する背景が提供されます。
できる最初のプログラムは、ファイルの内容や属性を変更し、変更をファイルに保存するなど、ファイルの操作を続けますか?
最初のプログラムがファイル記述子を開いたままである限り、そのファイル記述子を使用するシステム呼び出しまたはライブラリ関数を使用してファイルを変更し続けることができます。ファイルが同じファイルシステムの別のディレクトリに移動されると、変更は「新しい」ファイルに適用されます。別のファイルシステムに移動すると、他のディレクトリエントリが同じinodeを指していない場合、変更は最終的に失われます。 。
ファイルが移動されると、パス名/ファイル名は異なりますが、まだ同じinodeとデータブロックを持ちます。
同じファイルシステム内を移動した場合は、そうです。
プログラムがファイルを開くと、ファイルのパス名/ファイル名は対応するinodeとデータブロックを見つけるために使用され、プログラムはファイルのinodeとデータブロックのデータ構造へのポインタを直接間接的に保存します。照会後もパス名/ファイル名がまだ役に立つかどうかはわかりません。
はい、カーネルの助けを借りて、プログラムには、カーネルが維持するファイル記述を指すファイル記述子があります。ファイル名は重要ではありません。
答えが「はい」の場合、予想されるfromprograms、そのようなプログラムを作成したいと思いますか?
何もない予想される。一部のプログラムは、ファイルへの更新の書き込みを含むファイル操作中にファイルを開き、返されたファイル記述子を保持します。他の人はファイルを開き、返されたファイル記述子を保持しますが、Emacsを含むファイルへの書き込みにはより複雑な書き込み - 名前変更モードを使用します。 Emacsはまた、開いているファイルの外部変更を監視し、そのような変更について警告します。
結局彼らあなたのファイルを使用して実行する操作を追跡することは、ユーザーによって異なります。一部のプログラムはデータの損失を防ぐために多くの努力をしていますが、他のプログラムはそうではありません。
答え2
最初のプログラムがファイルの内容や属性を変更し、変更をファイルに保存するなど、ファイルを処理し続けることはできますか?
はい。
ファイルが移動されると、パス名/ファイル名は異なりますが、まだ同じinodeとデータブロックを持ちます。
はい。
プログラムがファイルを開くと、ファイルのパス名/ファイル名は対応するinodeとデータブロックを見つけるために使用され、プログラムはファイルのinodeとデータブロックのデータ構造へのポインタを直接間接的に保存します。
はい。ファイルを削除すると効果はほぼ同じですが、この場合、編集内容を保存することは困難です。
照会後もパス名/ファイル名がまだ役に立つかどうかはわかりません。
どういう意味なのかよくわかりません。私はそれが役に立つと思うものにかかっていると思います。同じパス検索を再実行すると、ここの場合と同じように別のファイルを取得できます。
Emacsは、編集中にファイルが変更されたかどうかをユーザーに知らせるのに役立ちます。これを検出するには、パスをポーリングまたは使用するinotify
などの操作を実行する必要があります。他の編集者は気にしません。
私はここに「必須」があるとは思わない。さまざまなプログラムが作成者が役に立つと思うことを行います。
FWIW、編集者はバックアップファイルを処理する方法と、ファイルの新しいバージョンを新しいinodeで作成するのか、それとも古いバージョンを上書きするのかが異なると思いました。 Emacsは次のように設定できます。
答え3
プログラムで予想される動作
プログラムは、開いているファイルの名前が変更されたという自動通知を受け取らないことを理解するのに役立ちます。推測できるように、移動後もファイルは変更されません。これは変わらなかった。目次保有名称が変更されました。これは理由目次ファイル権限以外の権限がファイルを削除(または作成)できるかどうかを制御します。
プログラムは、ディレクトリが変更されたときに通知を受け取るためにさまざまな技術を使用できます。しかし、ほとんどの人はこれを実行しないので、「予想される」動作は沈黙です。
答え4
プログラムがファイルを開くと、ファイルのパス名/ファイル名が対応するinodeとデータブロックを見つけるために使用されます。
ただし、プログラムは inode ではなくファイル記述子のみをインポートします。 inode はファイルシステムで内部的に使用されます。
vimが私にこう言った。赤いエラーでもあります。
E211: File "test" no longer available
私はただ名前変更それは - 移動します。この概念には名前の変更はありません。ファイルには多くの内容が含まれていますが、実用的な目的のための基本単位です。:w
とにかくやったように再びできましたが、間違いでした。
さらに:
W11: Warning: File "test" has changed since editing started
ただ満足しています。
vi
沈黙があるようでした。