【发布时间】:2020-12-31 23:26:32
【问题描述】:
我用 Python 编写了一个大型程序,我需要与一个较小的 C# 脚本对话。 (我意识到让 Python 和 C# 相互交谈并不是一种理想的状态,但我不得不通过一个硬件来做到这一点,这需要一个 C# 脚本。)我特别想要实现的目标 -这个问题背后的动机 - 我想知道 C# 脚本中何时发生特定捕获的异常。
我一直试图通过让我的 Python 程序查看 C# 脚本的返回代码来实现上述目的。我遇到的问题是,如果我告诉 C# 提供返回码 x,我的操作系统将收到返回码 y,而 Python 将收到返回码 z。虽然给定的 x 似乎总是对应于特定的 y 和特定的 z,但我很难理解这三者之间的关系;它们应该是一样的。
以下是我的设置细节:
- 我的 Python 版本是 Python 3。
- 我的操作系统是 Ubuntu 20.04。
- 我正在使用 Mono 来编译和运行我的 C# 脚本。
这是我正在谈论的那种事情的一个最小的工作示例:
这是一个很小的 C# 脚本:
namespace ConsoleApplication1
{
class Script
{
const int ramanujansNumber = 1729;
bool Run()
{
return false;
}
static int Main(string[] args)
{
Script program = new Script();
if(program.Run()) return 0;
else return ramanujansNumber;
}
}
}
如果我使用mcs Script.cs 编译它,使用mono Script.exe 运行它,然后运行echo $?,它会打印193。另一方面,如果我运行这个 Python 脚本:
import os
result = os.system("mono Script.exe")
print(result)
它打印 49408。这三个数字是什么关系:1729、193、49408?如果我知道 C# 脚本会返回什么,我能否预测 Python 将收到的返回码?
注意:我尝试在 C# 脚本中使用 Environment.Exit(code),而不是让 Main 返回一个整数。我遇到了完全相同的问题。
【问题讨论】:
标签: python c# mono return-code