【问题标题】:C# command line mode return a 64 bit numberC# 命令行模式返回一个 64 位数字
【发布时间】:2015-11-04 11:25:30
【问题描述】:

Enviornment.Exit() 方法可以返回 32 位数字。 是否可以在命令行执行模式下返回一个64位的数字

我使用 Enviornment.Exit() 返回一个计算值,而不是错误代码,以便另一个批处理文件直接读取。

除了使用注册表/文件之类的临时存储之外,还有什么方法可以直接退出 64 位值?

【问题讨论】:

  • 为什么会有人需要这个? Int32 有足够的范围来保持所有 system error codes 可能。请注意,从Int32Int64 之间存在隐式对话。
  • 如果是用于 IPC,您可能希望使用不同的方法而不是处理返回码。如果是因为错误......哇......你映射了这么多不同的错误吗?!?!?
  • 我假设您的目标是 Windows?
  • 目前,仅在 windows 目标中。我使用 Enviornment.Exit 返回一个计算值(不是错误代码),以便另一个应用程序直接读取它。
  • @Nalanchiracoder 这不是一个好习惯,我建议使用不同的策略让两个应用程序进行通信。退出代码是为了明确指示让其他系统/应用程序知道是否有错误。正如 MSDN 所说,“使用非零数字表示错误。”

标签: c# .net command-line 64-bit


【解决方案1】:

Windows 使用 32 位有符号整数作为退出代码,所以很遗憾您不能这样做。

【讨论】:

    【解决方案2】:

    不是,因为当前点网框架中的数字被定义为整数。参考:“退出代码”https://msdn.microsoft.com/en-us/library/system.environment.exitcode%28v=vs.110%29.aspx

    此外,Windows 应用程序的基本规则是返回一个 32 位整数作为退出代码。一个标准因此。你不会想要偏离这一点。

    还要注意他们对that MSDN page的评论

    ExitCode 属性是一个带符号的 32 位整数。为防止该属性返回负退出代码,您不应使用大于或等于 0x80000000 的值。

    另外,您能告诉我们为什么要返回一个 64 位数字吗?难道没有另一种翻译“退出代码”的方法吗?

    【讨论】:

    • 我正在使用 Enviornment.Exit() 返回一个计算值,而不是错误代码,供其他应用程序直接读取。
    • 这不是好的做法,我建议使用不同的策略让两个应用程序通信。退出代码是为了明确指示让其他系统/应用程序知道是否有错误。正如 MSDN 所说“使用非零数字来指示错误”。换句话说,它不是工作的工具,您应该考虑一种不同的策略来传达输出。 ExitCode 用于指示成功或错误。
    • 不知道你的应用场景。如果您能更详细地描述这一点,那么我们将能够提供更多帮助。但一般来说有不同的选择。要么输出到文件,要么输出到控制台,然后以 0 退出(或者如果应用程序真的失败了)。您可以将启动参数添加到您的应用程序,以便它可以选择适合的策略。如“-outputToConsole”或“-OutputToFile ”等。
    【解决方案3】:

    感谢您的澄清。 我修改了命令行执行以使用其他应用程序可以读取的 o/p 值更新文件

    【讨论】:

      猜你喜欢
      • 2011-06-28
      • 2013-01-22
      • 2010-11-12
      • 1970-01-01
      • 2016-12-16
      • 1970-01-01
      • 2018-05-25
      • 2016-11-16
      • 1970-01-01
      相关资源
      最近更新 更多