ファイル ロック - C++ fstream は ios::out|ios::in モードで txt ファイルを開きますが、プログラムの実行中にメモ帳でファイルを変更できますか?
世界只因有你
世界只因有你 2017-05-16 13:24:22
0
2
1099

C++ fstream は ios::out|ios::in モードで txt ファイルを開きますが、プログラムの実行中にメモ帳はファイルを変更できます。何が起こっているのでしょうか?

注: Win7 x64 の場合、アカウントは管理者です。UAC がないため、直接管理者になります。

リーリー

「OK」をクリックすると、「名前を付けて保存」ダイアログボックスが表示され、結果を上書きできます。

プログラムはまだ実行中ですが、ファイルは変更されています。

元々はsublimetextを使って直接変更することはできませんでしたが、メモ帳をいじったところsublimetextも変更できるようになりました。

プログラムの実行中に他のプログラムが特定のファイルを書き込んだり削除したりできないようにする方法を教えてください。
ありがとうございます。

世界只因有你
世界只因有你

全員に返信(2)
我想大声告诉你

まず問題について話しましょう。メモ帳が古いファイルを上書きした後、プロセスによって開かれたファイルは前のファイルになり(前のファイルはまだ存在しますが、表示されません)、再度編集したファイルはすでに新しいファイル

Linux では、必須のロックであってもリンクを解除することで回避できるため、Linux ではこの問題を回避する方法はありません

Windows のシステム API は特定の機能を提供する必要がありますが、「このファイルはプロセスによって占有されているため削除できません」ということがよくあるので、私はよく知っていますが、この制限を回避する可能性は排除しません

いいねを押す +0
小葫芦

この質問は非常に興味深いものです。トラブルシューティングの考え方は次のとおりです。

  1. ファイル IO キャッシュの問題ですか?

    エディタ -- システム バッファ --- エンティティ ファイル

  2. ファイルの読み取り/書き込みロックの問題ですか?

    (コードは読み取りおよび書き込み可能な方法でファイルを開き、関連付けを確立していますが、読み取りのみを使用しているようです。読み取りロックは排他的ではないようです)

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート