私の質問は、プロセスが異常終了した場合 (シグナルを介して SIGKILL である可能性があるため、傍受できない)、そのリソースが解放される順序または原子性が保証されているかどうかです。特に、ファイル ロックと共有メモリに関心があります。
例えば:
1) プロセスが 2 つのファイルのロックを保持していて、異常終了した場合、同じファイルをロックしようとしている別のプロセスが、1 つのファイルがロックされ、別のファイルがロック解除されているのを見る可能性はありますか? それとも、他のプロセスの観点から、ファイル ロックの解放プロセスはアトミックですか?
アトミックでない場合、少なくとも、終了プロセスによってファイル ロックが解放される事前定義された順序はありますか (たとえば、最初にロックされた順序とは逆の順序で)?
2) 適切な共有メモリの初期化を確実にするためにファイル ロックを使用したかった - 共有メモリにマップされたプロセスは共有ロックを保持し、同じ共有メモリ セグメントにマップしたい新しいプロセスはそのロックをテストして、初期化を実行する必要があります (必要に応じて後で詳細を説明できます)。
ただし、ここで同じ疑問が生じます。ファイル ロックを保持し、共有メモリ セグメントにもマップされているプロセスが異常終了した場合、共有メモリが自動的にマップ解除された後も、別のプロセスがファイル ロックをロックされていると見なす可能性はありますか? それとも、共有メモリセグメントのマッピング解除とファイルのロック解除は、他のプロセスの観点からアトミックですか?