You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unix系统下C#获取外部进程退出码始终为0的问题咨询

监控外部进程并获取正确退出码

编辑#2

看来这似乎无法实现,但我会保留此问题,以防其他尝试此操作的人遇到相同问题。


我有两个独立运行的进程:进程A以非0的退出码终止,进程B等待进程A退出并打印其退出码。进程B并未启动进程A,仅通过传入PID作为参数来监控它。

进程A代码

// process A
Console.WriteLine("Press enter to exit...");
Console.ReadLine();
Environment.Exit(100);

进程B代码

// process B
int pid = int.Parse(args[0]);
using var proc = Process.GetProcessById(pid);
// Save SafeHandle, otherwise it throws
// InvalidOperationException: Process was not started by this object
_ = proc.SafeHandle;
proc.WaitForExit();
Console.WriteLine(proc.ExitCode); // always prints 0

有没有办法让进程B真正获取到正确的退出码?如果我在启动进程A的终端中运行echo $?,可以得到100,但我不知道如何在未启动目标进程的情况下获取其退出码。

编辑

添加_ = proc.SafeHandle这一行是因为参考了相关解决方案。


内容的提问来源于stack exchange,提问作者Cristi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 04:45:56