当前位置: 首页 > 面试题库 >

C ++中system()函数调用的返回值,用于运行Python程序

轩辕海
2023-03-14
问题内容

我在Linux上使用system()调用运行python程序的代码进行工作。我对此函数调用返回的值感兴趣,以了解python程序执行的过程。

到目前为止,我发现了3个结果:

  • 当python进程成功完成时,system()返回的值为0

  • 当python进程在执行中被杀死时(使用kill -9 pid),system()返回的值为9

  • 当python进程由于参数错误而自行失败时,system()返回的值为512

这与我阅读的有关system()函数的内容不符。

此外,被调用的python程序的代码表明,sys.exit(2)遇到任何错误以及sys.exit(0)执行成功完成时,它将退出。

谁能把这两个联系起来?我是否以错误的方式解释了返回值?是否有涉及Linux的处理,采用sys.exit()python程序功能的参数并system()基于python返回函数的值?


问题答案:

该计划的退出代码调用可以与获取WEXITSTATUS(status)具体根据手册页。另请参见手册页wait

int status = system("/path/to/my/program");
if (status < 0)
    std::cout << "Error: " << strerror(errno) << '\n';
else
{
    if (WIFEXITED(status))
        std::cout << "Program returned normally, exit code " << WEXITSTATUS(status) << '\n';
    else
        std::cout << "Program exited abnormaly\n";
}


 类似资料:
  • 问题内容: 我正在使用Postgresql 8.3,并具有以下简单功能,该功能会将a返回 给客户端 现在,我可以使用以下SQL命令来调用此函数并操纵返回的游标,但是游标名称是由PostgreSQL自动生成的 此外,如38.7.3.5中所述,显式地将游标名称声明为函数的输入参数 。返回游标。我可以声明自己的游标名称并使用此游标名称来操纵返回的游标,而不是为我自动生成的Postgresql吗?如果不是

  • 问题内容: 我正在编写Go程序。从这个Go程序中,我想调用另一个文件中定义的Python函数并接收该函数的返回值,以便可以在Go程序的后续处理中使用它。我在将所有返回的数据恢复到我的Go程序时遇到了麻烦。以下是我认为可行的最低示例,但显然无效: gofile.go pythonfile.py 如果我打电话,我得到以下输出: 一些注意事项: 我在Python调用中使用该标志,因此可以直接调用该函数。

  • 问题内容: 我在从Node.js中的回调函数返回值时遇到了小麻烦,我将尝试尽可能轻松地解释我的情况。考虑一下我有一个片段,它包含URL,并命中该URL,并提供输出: 我试图将其包装在函数中并返回如下值: 因为在我的Node.js代码中,我有很多语句将决定value的值,例如: 关键是a内的所有语句将保持相同,除了的值。因此,绝对需要将这些通用代码放入函数中。我尝试了同样的方法,但是in总是会回报我

  • 问题内容: 我如何使这个小功能“ imageExists”返回ajax请求是否成功? 问题答案: 我相信您将必须使用同步模式并使用单独的变量来存储返回值。

  • 问题内容: 我正在尝试获取返回值,但始终无法定义。 我不确定如何获取任何返回值并在其他地方使用它?我需要使用此返回值来与其他函数进行验证,但是它似乎在范围之内。 这是我的代码: 问题答案: 移动以下行: 进入回调: 如果希望返回某些内容,则还需要向其添加回调,以便可以使用它的返回值。例如,如果您希望这样做: 这将无法正常工作,因为内容的最终值将被异步检索。相反,您需要这样做: 您不能异步返回数据。

  • 问题内容: 我有很多用C语言编写的函数,我希望我用Python编写的一些代码能够访问这些函数。 我已经在这里阅读了几个类似问题的问题,但是我对我应该采用哪种方法感到困惑。 一个问题建议使用ctypes,另一个问题建议使用cython。我已经阅读了两者的文档,但对于哪个对我来说更好,我还是一无所知。 基本上,我已经编写了一些Python代码来进行二维FFT,我希望C代码能够看到该结果,然后通过编写的