C# 脱离从C开始的进程#

C# 脱离从C开始的进程#,c#,.net,winapi,process,redirectstandardoutput,C#,.net,Winapi,Process,Redirectstandardoutput,我有一些使用System.Diagnostics.Process.Start启动子进程的现有代码。它还使用ProcessStartInfo.RedirectStandardOutput捕获该进程的输出流。这一切都很好 我还需要将其连接到一个。我有代码也可以做到这一点,只要流程还没有附加到作业,它就可以正常工作 不幸的是,情况并非总是如此,因此我需要使用create\u BREAKAWAY\u FROM\u JOB标志创建流程。这就是我被困的地方 在我看来,有两种可能的前进方式: 以某种方式说服过

我有一些使用
System.Diagnostics.Process.Start启动子进程的现有代码。它还使用
ProcessStartInfo.RedirectStandardOutput
捕获该进程的输出流。这一切都很好

我还需要将其连接到一个。我有代码也可以做到这一点,只要流程还没有附加到作业,它就可以正常工作

不幸的是,情况并非总是如此,因此我需要使用
create\u BREAKAWAY\u FROM\u JOB
标志创建流程。这就是我被困的地方

在我看来,有两种可能的前进方式:

  • 以某种方式说服
    过程。开始
    传递一个额外的小标志
  • 放弃
    进程
    类,返回原始
    创建进程
    ,然后(以某种方式)重新执行输出重定向

  • 我真的不知道如何做这两件事,或者是否有一些中间立场也可能起作用。以前有没有人遇到过这种情况,并有一些想法/代码?

    目前,我选择了选项2。我想我已经找到了如何进行输出捕获的方法,尽管我还没有对它进行广泛的测试


    尽管如此,您仍然对其他想法感兴趣。

    您如何将流程附加到工作中?是否可以以类似的方式将进程与作业分离?我正在使用
    AssignProcessToJobObject
    。遗憾的是,作业是单向的——一旦进程被分配给作业,就不能取消分配,除非您可以将该标志传递给
    CreateProcess
    ,否则子进程将继承其父进程的作业。