メモリマッピングされたファイルを閉じることができない場合は、 (munmap syscallを使用)成功結果(= 0)私はまだファイルレコードをlsof -n
に見ることができます。まだマップされていないので、メモリマップされたファイルはまだ参照されていないので閉じられません。
Linuxでは、mmapのmanページによると、closing the file doesn't unmap the file
が明示されています。
実際には2つのOS間で異なる動作ですか? この異なる動作の説明はありますか?
EDIT:以下のコメントを読んだあと、プラットフォーム間での動作が異なること、そしてまだファイルが開かれている理由がmmapによって参照されていることがわかりました。
おかげ
LinuxとMacOSの間でアプリケーションの使用パターンが異なることはありますか?ファイルを実際に閉じる前に閉じる*と*ファイルのアンマップが必要になると思います。 Linuxはおそらくその命令に無関心ですが、おそらく最初に行われるMacOSの心配です。 – wallyk
mmapのためファイルがまだ使用中です...あなたがしたのは、詳細記述子です。 –
Linuxでテストしましたか? 'lsof -n'出力に* 2 *のエントリがあります –