2011-12-16 12 views
4

私は、子プロセスを開始するのにSystem.Diagnostics.Process.Startを使用する既存のコードをいくつか持っています。また、そのプロセスの出力ストリームをキャプチャするのにProcessStartInfo.RedirectStandardOutputを使用します。これはうまく動作しています。C#から開始されたプロセスの破棄

また、job objectに添付する必要があります。私もこれを行うコードを持っています、そして、それはプロセスが既に仕事に結びついていないなら、それはうまくいきます。

残念ながら、必ずしもそうではないので、CREATE_BREAKAWAY_FROM_JOBフラグを使用してプロセスを作成する必要があります。これは私が立ち往生している場所です。

私はそれを見ると、ここから前方に2つの方法があります。

  1. どういうわけかその1つの余分な少しのフラグを渡すためにProcess.Startを納得させるには。
  2. クラスを放棄すると、CreateProcessに戻って出力リダイレクトをやり直します。

私はこれらのどちらをやるべきか、またうまくいくかもしれない中間地点があるかどうかはわかりません。誰かがこれまでにこれにぶつかり、いくつかのアイデアやコードを持っていますか?

+0

どのようにプロセスをジョブにアタッチしていますか?同様の方法でジョブをプロセスから切り離すことは可能ですか? –

+0

私は 'AssignProcessToJobObject'を使用しています。悲しいことに、ジョブは一方通行です。プロセスに割り当てられていないジョブに割り当てられたプロセスは、そのフラグを 'CreateProcess'に渡すことができない限り、子プロセスは親のジョブを継承します。 – Miral

答えて

1

現時点では、オプション2になっています。私は出力のキャプチャを行う方法を検討したと思いますが、私はそれを広範囲にテストしていません。

しかし、まだ別のアイデアに興味があります。

関連する問題