7

如果在我的 C# 应用程序中,我正在创建一个可以正常终止或开始行为不端的子进程,在这种情况下,我通过调用 Process.Kill() 来终止它。但是,我想知道该进程是否已退出通常。我知道我可以获得终止进程的错误代码,但是什么是正常的退出代码,什么表示该进程已被终止?

4

2 回答 2

11

Process.Kill() 的源代码显示将退出代码设置为 -1(截至 2012 年 9 月)。Windows 操作系统实际上使用 32 位无符号值作为退出代码,但我相信 C# 中的有符号->无符号->有符号转换应该可以工作(我只需要检查零或非零,所以没关系我的代码)。

另一方面,这显然是未记录的行为(为什么?),因此微软明天可以更改它并通过将退出代码设置为 0 来破坏我的代码。

于 2012-09-14T20:13:17.447 回答
5

您可以使用属性 ExitCode 但不幸的是,这取决于应用程序的构建方式。因此,如果您有应用程序的源代码,请确保它在良好退出时正确返回。请参阅此链接到 msdn 更详细地描述这一点:http: //msdn.microsoft.com/en-us/library/system.diagnostics.process.exitcode.aspx

于 2010-03-16T17:32:16.980 回答