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
相关产品推荐
相关产品推荐

