脱离从 C# 开始的进程

Mir*_*ral 5 .net c# winapi process redirectstandardoutput

我有一些现有的代码System.Diagnostics.Process.Start用于启动子进程。它还ProcessStartInfo.RedirectStandardOutput用于捕获该进程的输出流。这一切工作正常。

我还需要将它附加到一个作业对象。我也有执行此操作的代码,只要该过程尚未附加到作业,它就可以正常工作。

不幸的是,情况并非总是如此,因此我需要使用CREATE_BREAKAWAY_FROM_JOB标志创建进程。这就是我被困的地方。

在我看来,从这里开始有两种可能的方式:

  1. 以某种方式说服Process.Start通过那一面额外的小旗。
  2. 放弃Process课程,回到 raw CreateProcess,并(以某种方式)重做输出重定向。

我不太确定如何做其中任何一个,或者是否有一些中间立场也可能起作用。有没有其他人遇到过这个问题并有一些想法/代码?

Mir*_*ral 1

目前,我选择了选项#2。我想我已经弄清楚了如何进行输出捕获,尽管我还没有对其进行广泛的测试。

不过,仍然对替代想法感兴趣。