Microsoftはここで安全にプレーしました。 "Creating a Child Process with Redirected Input and Output"で、後で子プロセスが所有する継承されたハンドルを閉じる必要がありますか?
このプロセスが終了すると、残りの開いているハンドルがクリーンアップされます。
大きなアプリケーションでリソースリークを回避するには、ハンドルを明示的に閉じます。
これは完全に役に立たないものです。何が処理されますか?どのプロセスですか?
私はその周りに頭を浮かべたい。
親プロセスでハンドルがSECURITY_ATTRIBUTES.bInheritHandle = TRUE
で作成されると、子プロセスがそれを参照して使用することができ、ハンドルは両方のプロセスで同じ値とアクセス権を持ちます。
しかし、それは同じハンドルですか、それとも同じ数値表現を持つコピーですか?
hRead
ハンドルを子プロセスに渡してパイプから読み込み、子プロセスがハンドルを閉じると、も親プロセスから閉じなければなりませんか?子プロセスの下からパイプを拭き取ることはできませんか?
私の実験では、CloseHandle
は、子がそれを閉じた後に子に渡されたハンドルhRead
を閉じるときに成功を返します。これは強く主張します。あなたはそれを閉じなければなりません。しかし、私はここでより良いアドバイスをいただければ幸いです。
Ah。子プロセスを生成するとハンドル*がクローン化されます。それは私が後にしたものです。 – GSerg