0

現在のプロセスの実行可能ファイルを読み取り/書き込み操作のために開こうとしています(実行可能ファイルに追加のデータが添付されています)が、std::fstreamはios::in|でファイルを開きません。ios :: out | open()が(O_RDWRフラグが設定されている場合)であっても、ios::binaryモード。

std :: fstreamがファイルを開かないのに、open()が開く理由を誰かが知っていますか?もしそうなら、どうすればstd :: fstreamにファイルを開かせることができますか?

4

2 に答える 2

1

ほとんどの場合、ファイル共有のセマンティクスに関係しています。同様の質問を扱っているこのスレッドを参照してください。答えは「ファイル保護、ファイル共有、ファイルパーミッションの概念はOS固有であるため、標準のC++ではカバーされていません」です。

于 2010-08-05T03:33:35.660 に答える
0

どこかで、内部でstd::fstreamバージョンが呼び出しているのではないかと思いますopen-きっとそうでしょう。とにかくerrnoをチェックしようとしましたか、またはstraceエラーが発生した場合にシステムコールが返されるかどうかを確認するために実行しましたか?

于 2010-08-05T03:32:07.790 に答える