c# - 打破从 C# 开始的进程

标签 c# .net winapi process redirectstandardoutput

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

我还需要将其附加到 job object .我也有执行此操作的代码,只要该流程尚未附加到作业,它就可以正常工作。

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

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

  1. 以某种方式说服 Process.Start 传递那个额外的小标志。
  2. 放弃 Process 类,回退到原始 CreateProcess,并(以某种方式)重做输出重定向。

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

最佳答案

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

不过,仍然对其他想法感兴趣。

关于c# - 打破从 C# 开始的进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8531018/

相关文章:

c# - 如何根据条件将 C# WPF TextBox 绑定(bind)到不同的属性?

javascript - 无法在 typescript 中调用 svgdotjs rect 方法

c# - 使用自定义值格式将 gridview 导出到 excel

.net - 加载不受信任的程序集

c# - 如何防止对非托管 dll 调用的访问冲突?

.net - 在 ClickOnce 中维护程序集版本?

c# - 对于从 IEnumerable<T> 继承的 .Net 类,为什么 GetEnumerator 在 COM 中不可见?

c++ - 使用延迟加载加载正确的库-返回值类型错误

c - 将入口点更改为PE文件中新添加的shellcode段后,如何恢复主进程?

c++ - 更改按钮文本 winapi