【发布时间】:2011-12-16 07:19:39
【问题描述】:
我有一些使用System.Diagnostics.Process.Start 来启动子进程的现有代码。它还使用ProcessStartInfo.RedirectStandardOutput 来捕获该进程的输出流。这一切都很好。
我还需要将它附加到job object。我也有执行此操作的代码,只要该进程尚未附加到作业,它就可以正常工作。
不幸的是,情况并非总是如此,所以我需要使用CREATE_BREAKAWAY_FROM_JOB 标志创建进程。这就是我卡住的地方。
在我看来,从这里开始有两种可能的方式:
- 以某种方式说服
Process.Start传递一个额外的小标志。 - 放弃
Process类,退回到原始CreateProcess,并(以某种方式)重做输出重定向。
我不确定如何做这些,或者是否有一些中间立场也可能有效。有没有其他人遇到过这个并有一些想法/代码?
【问题讨论】:
-
如何将流程附加到作业?是否可以以类似的方式将进程与作业分离?
-
我正在使用
AssignProcessToJobObject。可悲的是,工作是单向的——一旦一个进程被分配给一个工作,它就不能被取消分配,除非你可以将该标志传递给CreateProcess,否则子进程将继承其父进程的工作。
标签: c# .net winapi process redirectstandardoutput