从C#启动的进程如何分离?

6
我有一些现有的代码,使用System.Diagnostics.Process.Start来启动一个子进程。它还使用ProcessStartInfo.RedirectStandardOutput来捕获该进程的输出流。这部分代码已经正常工作。
我还需要将其连接到作业对象。我也有可以做到这一点的代码,只要该进程尚未连接到作业对象即可正常工作。
不幸的是,并非总是这种情况,因此我需要使用CREATE_BREAKAWAY_FROM_JOB标志创建进程。这就是我卡住的地方。
在我看来,从这里可以有两种可能的方法:
  1. 以某种方式说服Process.Start传递那个额外的小标志。
  2. 放弃Process类,回到原始的CreateProcess,并(某种方式)重新进行输出重定向。
我不太确定如何执行这两种操作,或者是否有一些中间地带也可以起作用。有人遇到过类似问题并有一些想法/代码吗?

你如何将进程附加到作业中?是否可以以类似的方式从作业中分离进程? - Adam Ralph
我正在使用 AssignProcessToJobObject。遗憾的是,作业只能单向进行--一旦将进程分配给作业对象,它就无法解除关联,除非您可以将该标志传递给 CreateProcess,否则子进程将继承其父进程的作业对象。 - Miral
1个回答

1

目前,我选择了第二个选项。我认为我已经想出了如何进行输出捕获的方法,尽管我还没有进行过广泛的测试。

不过,我仍然对其他替代方案感兴趣。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接