【发布时间】:2011-01-28 03:41:31
【问题描述】:
如果在我的 C# 应用程序中,我正在创建一个可以正常终止或开始行为不端的子进程,在这种情况下,我会通过调用 Process.Kill() 来终止它。但是,我想知道进程已正常退出。我知道我可以得到已终止进程的错误代码,但正常的退出代码是什么?什么表示进程已被终止?
【问题讨论】:
标签: c# exit-code kill-process
如果在我的 C# 应用程序中,我正在创建一个可以正常终止或开始行为不端的子进程,在这种情况下,我会通过调用 Process.Kill() 来终止它。但是,我想知道进程已正常退出。我知道我可以得到已终止进程的错误代码,但正常的退出代码是什么?什么表示进程已被终止?
【问题讨论】:
标签: c# exit-code kill-process
您可以使用属性 ExitCode,但不幸的是,这取决于应用程序的构建方式。因此,如果您有应用程序的源代码,请确保它在良好退出时正确返回。请参阅此链接到 msdn 更详细地描述这一点: http://msdn.microsoft.com/en-us/library/system.diagnostics.process.exitcode.aspx
【讨论】:
Process.Kill() 的源代码显示将退出代码设置为 -1(截至 2012 年 9 月)。 Windows 操作系统实际上使用 32 位无符号值作为退出代码,但我相信 C# 中的有符号->无符号->有符号转换应该可以工作(我只需要检查零或非零,所以没关系我的代码)。
另一方面,这显然是未记录的行为(为什么?),因此微软明天可能会更改它,并通过将退出代码设置为 0 来破坏我的代码。
【讨论】: