我有一些现有的代码,使用
我还需要将其连接到作业对象。我也有可以做到这一点的代码,只要该进程尚未连接到作业对象即可正常工作。
不幸的是,并非总是这种情况,因此我需要使用
在我看来,从这里可以有两种可能的方法:
System.Diagnostics.Process.Start
来启动一个子进程。它还使用ProcessStartInfo.RedirectStandardOutput
来捕获该进程的输出流。这部分代码已经正常工作。我还需要将其连接到作业对象。我也有可以做到这一点的代码,只要该进程尚未连接到作业对象即可正常工作。
不幸的是,并非总是这种情况,因此我需要使用
CREATE_BREAKAWAY_FROM_JOB
标志创建进程。这就是我卡住的地方。在我看来,从这里可以有两种可能的方法:
- 以某种方式说服
Process.Start
传递那个额外的小标志。 - 放弃
Process
类,回到原始的CreateProcess
,并(某种方式)重新进行输出重定向。
AssignProcessToJobObject
。遗憾的是,作业只能单向进行--一旦将进程分配给作业对象,它就无法解除关联,除非您可以将该标志传递给CreateProcess
,否则子进程将继承其父进程的作业对象。 - Miral