2011-11-15 7 views
2

プロセス(プロセスA)が終了すると、そのリソースをすべてクリーンアップする方法はありますか?プロセスAは、他のプロセスによって提供されるサービスを使用するときに別のプロセス空間にリソースを割り当てることができます(AはIPCを使用して別のプロセスが提供するサービスにアクセスします)。Linuxでのリソースクリーンアップ

標準的なメカニズム/フレームワークはありますか?私はLinux環境で実行します。

おかげで、 デン

答えて

2

一部のリソースが自動的にクリーンアップされます。スタックまたはヒープに割り当てられたメモリ、ソケットおよびファイル記述子、セマフォ操作(SEM_UNDOを使用する場合)

  • がでクリーンアッププロセスBで状況を検出

    1. :あなたは漠然とあなたがする必要があります(別のプロセスBからサービスにアクセスするためにIPCを使用して)あなたの質問にを参照しているシナリオでは

      ハンド。

    #1を解決する最初の主体の方法は、プロセスBがプロセスAのPIDの存在をポーリングできるかどうかです。明らかに理想的ではありません。より良い解決策は、接続の消滅のもう一方の側(たとえば、TCPソケット)を検出するIPCメソッドを使用することです。

    ネットワーク上の2台のコンピュータと比較して、プロセスAとBの間にパラレルを描画する場合、これに対する典型的な解決策は、プロセスBがプロセスAからのすべてのAPIコールの後にクリーンアップするか、それが接続リストを崩壊させ、最終的にタイムアウトしてプロセスAのリソースをクリーンアップすることです。時間。