.Net Core C# 使用Tmds.ExecFunction执行子进程的PID获取及输出问题
.NET Core 子进程隔离执行代码的问题与解决
背景
出于内存隔离与稳定性考虑,在 .NET Core C# 项目中需要以子进程而非线程的形式执行部分方法或类,当前使用的实现库为 Tmds.ExecFunction。
问题现象
- 调用
ExecFunction.Run(() => new NewSubProcessClass());时,程序可正常生成子进程,在 Linux Docker 容器中也能正常输出控制台内容,但无法获取子进程的PID。 - 尝试换用签名为
public static Process Start(Action action, Action<ExecFunctionOptions> configure = null);的ExecFunction.Start方法,将原有调用替换为Process process = ExecFunction.Start(() => new NewSubProcessClass());后,完全无法输出控制台内容。
解决方案
经@bazzilic 建议,在拿到 Start 方法返回的 Process 实例后,补充调用 process.WaitForExit() 即可解决控制台无输出的问题。
内容的提问来源于stack exchange,提问作者Willi
相关产品推荐
相关产品推荐

