ということとは:"子ども-プロセスを継承の取扱い"?
質問
あWin32オブジェクトによるときには"受け継がれてきたもの"を子プロセス作成している方法を紹介した。(イベント、ミューテックス、パイプ、...)
いることであるとは何を意味するのか。
ということかしてい名前のイベントオブジェクトで作成された、 CreateEvent
, 一時 bInheritHandle == true
, は、別の時間 == false
.
今では、開始まります。どのような二つのイベントを扱うに影響する子どものですか?るシナリオをいもある。
解決
作成した場合は、オープンオブジェクトを取り扱うするのを受け継ぎ、子プロセスを許可を受け継ぐに取り扱うなど指定でき bInheritHandles = TRUE
のためのCreateProcess)のコピーの方に。その継承の取り扱いに同じ取り扱値として、親会社。したがって、たとえば、:
CreateEvent
ハンドルを返しますイベントオブジェクト、ハンドル0x1234
.- することができますがその取扱いを継承しています。
- 自分の好きな名前を付けて子プロセスを継承しお。
- この子プロセスを使用できる対応
0x1234
な話CreateEvent
またはOpenEvent
.だが例えばパスの値は、コマンドラインに決まります。
ここは名前のない物-それらは名前のない、他のプロセスできな開きます。ハンドル相続子プロセスを取得できる取り扱うに名前のない物したい場合はしています。
他のヒント
ワンポイントされていない既存の答えが可能な子プロセスを継承の取り扱いのみに影響するの子プロセスでも影響されるオブジェクトを取り扱うご参照.れば、親プロセスのexitの子プロセスを保ち、オブジェクト。
が可能な子プロセスを継承の取り扱考慮する必要があるかどうかで結果オブジェクトの生以上べきである;例えば、アプリケーションすることを期待している"とインスタンスでの走行時間によって,より、作成イベントオブジェクトを指定された名前を見たかどうかは既に存在しています。れを子プロセスを継承するイベントオブジェクトは、outlivesの親会社でなければならなfalseです。
より一般的に、受け継が取り扱うファイルの場合に結果ファイルに残りの使用が利用できなくなります。
このため、キャッシュフロー:
すべての扱いとして非遺ない限り、具体的にする必要が引き継がれます。
ば、サブプロセスは必要ありませんを受け継ぐには、パス
FALSE
のためのbInheritHandles
.ば、サブプロセスはを受け継ぎ、 みすることが可能になると受け継ぐ者特定取り扱うことが必要であ.
一方、これが更なる有用であること。例えば、 したい の子プロセスとしてカウントするインスタンスは、親プロセス、またはファイルが利用できなまでの子どもが終了した.別のトリックは子どもを受け継ぐハンドルをして、指定されたオブジェクトを使用して存在-非存在のオブジェクトかどうか判断するために子どもが息づいていなくても、パス周辺のプロセス対応やプロセスIDです。
、その後、子プロセスは親によって作成された、まったく同じオブジェクトへのハンドルを使用することができます。これは、子供が(継承イベントオブジェクトハンドルのための多くの他の用途がある)タスクが完了したとき、親に知らせるためにイベントハンドルを使用した方法で使用することができます。
編集: 偽情報を削除します。