C# 中 EXIT_SUCCESS 和 EXIT_FAILURE 的等价物是什么?

What is the equivalent of EXIT_SUCCESS and EXIT_FAILURE in C#?

我正在启动一个进程,想检查它的退出代码是成功还是失败。

Process myProcess = new Process();

myProcess.Start();

myProcess.WaitForExit();

// What should i put instead of EXIT_SUCCESS ?
if (myProcess.ExitCode == EXIT_SUCCESS) 
{
  // Do something
}

EXIT_SUCCESS 似乎不存在,在 C# 中是否有等效的或规范的方法来检查零?

在检查ExitCode 之前,您应该先检查HasExited 属性。否则会抛出异常。

if (myProcess.HasExited) {
  //then check exit code
}

正如@DalmTo 所说,退出代码取决于应用程序。但按照惯例,零值相当于 EXIT_SUCCESS。

来自 C/C++ 的代码通常将这些定义为常量,其中包括使用这些的 header。所以你通常有这样的东西:

#define EXIT_SUCCESS 0

以及其他一些可能的 return 代码的类似定义。毕竟,那些 "exit codes" 只是一些包含文件定义为常量的数值,而不是语言构造。 由于 C# 缺少包含和 header 文件,您可能需要手动定义它们:

private const int EXIT_SUCCESS = 0

然后在您的代码中像使用任何其他常量一样使用。所以您的示例代码现在将按预期编译和工作

if (myProcess.ExitCode == EXIT_SUCCESS) 
{
  // Do something
}

您可以在 MSDN 上找到 System Error Codes 参考资料:

ERROR_SUCCESS
0 (0x0) The operation completed successfully.

由于它是唯一一个成功代码和另一个错误代码,因此该部分称为错误代码。这不是特定于 C#,仅适用于 Windows.

另请注意,您可以扫描进程的标准 input/output/error 流:

如果您使用的是非Windows环境,您应该查看相关参考。