選択を取り扱うに継承された子プロセス
-
23-09-2019 - |
質問
作成時に子プロセスにC++はWindows APIにつき遺産の取り扱親から子供.Microsoft例 "創造する子プロセスリダイレクト入出力,替子プロセス"stdするパイプの親会社が必要となる継承のためのパイプリダイレクトに利用可能です。
ように小さなデモクラスを起動する外部実行ファイルを読み込み、出力して吐かに相手方に返されるファイルに出力).ようにしているビルトインする時の特集では、まだブロックを一定の時間を呼び出す前に、 TerminateProcess()
の子どもに引き続きあい。
しかし、私が加速されていることが分かりを扱う相続し、子プロセスにも対応(見える ロExplorer の出力ファイルです。たくないの子プロセスを得ることが、親この場合(このデモクラス)であるとの認識はございませんの取扱いのいずれかで、できないので現在使用 SetHandleInformation()
にunflagの出力ファイルを具体的には排除でから継承関係を示します。
私は一部が必要になりより良い方法を継承 のみ 特定の取り扱いになりたいなー"ブランケット"の継承を図ると望ましくない。残念なことにしていきたソリューションを提供閲覧し、多くの関連MSDNしていたので、有ンターネットで調べ自分の小.
したがって、少なくともい 何か の取扱いから、子どものではな人柄のデモクラス(彼らが使用する呼び出しのクラスは、このデモクラスが明示的知識の---)。
ソリューションより選択的継承?私を中心に、ソリューションを行なっていを宣言するのに具体的にはどの扱いを受け継ぐには、すべての国連の指定の取扱は継承されませんがその解が存在します。
何卒よろしくお願いいたします。
解決
出力ファイルの取扱は継承される子プロセス、そのコードは、親プロセスの開のファイルを明示的に述べてのファイルに対応すべき遺.する値 lpSecurityAttributes
パラメータの CreateFile
.デフォルトの状態の取扱いに ない する遺.
そのためのプロセス-作成クラスはなく第二からその呼び出し側は、既定のファイルです。
ただし、特別な知識を正確に取り扱うに新しいプロセス、そしてWindows Vistaする仕組みを指定する必要が引き継がれます。に準備している場合は、呼び出 CreateProcess
, を使用し STARTUPINFOEX
構造ではなく通常の STARTUPINFO
.その lpAttributeList
ます。配分および初期化し、その利用 UpdateProcThreadAttribute
と PROC_THREAD_ATTRIBUTE_HANDLE_LIST
設定の一覧を取り扱うに継承しています。すべてを取り扱う必要の継承可能なすものを指定する必要があり bInheritHandles = true
をご利用いただきます CreateProcess
.あなたも含める必要がある EXTENDED_STARTUPINFO_PRESENT
の dwCreationFlags
パラメータとします。 レイモンド-陳ることにより、技術には2011年のこと。
この機能付加になるとき、そのかみ[列挙すべてのプログラムのオープンの取扱]は完全に文書化されていて、その継承性 SetHandleInformation
, ものと思われる範囲を超えての機能の仕事を子プロセス。うるコードを作成し、取り扱う心配はるかどうかという遺.
他のヒント
あなたは SetHandleInformation を明確に使用することができますあなたの出力ハンドルのHANDLE_FLAG_INHERIT
ビットが、これはそれを継承する子プロセスを防止します。
このフラグが設定されている場合は、、TRUEへのCreateProcessセットのbInheritHandlesパラメータで作成された子プロセスがオブジェクトハンドルを継承します。