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

时间:2015-01-23 12:07:33

标签: c# .net process exit-code

我正在启动一个流程,并希望检查其退出代码是否成功。

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#中是否存在等效或规范的方式来检查零点?

3 个答案:

答案 0 :(得分:7)

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

  

<强> ERROR_SUCCESS
      0(0x0)         操作成功完成。

由于它是唯一的成功代码和其他错误代码,因此该部分称为错误代码。这并非针对C#,仅适用于Windows。

另请注意,您可以扫描过程的标准输入/输出/错误流:

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

答案 1 :(得分:2)

从C / C ++代码中,通常将这些代码定义为使用这些代码的某些include头中的常量。所以你通常会有这样的事情:

#define EXIT_SUCCESS 0

其他一些可能的返回码的类似定义。毕竟,那些&#34;退出代码&#34;只是由某些包含文件定义为常量的数值,而不是语言构造。 由于C#缺少包含和头文件,您可能需要手动定义它们:

private const int EXIT_SUCCESS = 0

然后只需在代码中使用任何其他常量。因此,您的示例代码现在将按预期编译和工作

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

答案 2 :(得分:0)

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

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

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