使用 Main() 返回值作为 python 脚本的参数

Using Main() return value as an argument for a python script

本文关键字:python 脚本 参数 Main 返回值 使用      更新时间:2023-10-16

我希望我的C++进程传递其返回值以打开python脚本。

CPP 示例文件

int main()
{
//do something
//process is going to finish and is gonna return, for simplicity, 0
//retval = 0, or whatever the return value is going to be 
popen("mypython_script.py retval")
return 0;
}

mypython_script.py

if __name__ == "__main__":
cpp_retval = sys.argv[1]
print(cpp_retval)

我不知道C++文件是否可以按照描述发送它们的返回值,但这只是我想要实现的一般行为。

我还可以控制每个C++进程的父进程:它是另一个 python 脚本,负责打开C++文件并在需要时杀死它们的进程,所以如果你有一个解决方案涉及使用父进程从"cpp 示例文件"获取返回值,那非常受欢迎

编辑:我忘了补充一点,我不能要求父python进程等待C++程序返回一些东西。我绝不能在我的程序中进行任何形式的"等待"。

如果使用cpp_retval = subprocess.call(...)cpp_retval = subprocesss.run(...).returncode(https://docs.python.org/3/library/subprocess.html(运行C++程序,则可以从父python脚本捕获C++程序的返回值。

然后你可以把它传递给另一个python脚本。所以,像这样:

cpp_retval = subprocess.call(["my_cpp_program.exe"])
subprocess.call(["my_python_script.py", str(cpp_retval)])

如果你想直接将值从C++程序传递给python脚本,你可以这样做:

#include <cstdlib> // std::system
#include <string>
int main()
{
const int retval = do_stuff();
std::system((std::string("my_python_script.py") + ' ' + std::to_string(retval)).c_str());
return retval;
}