类似于:
program not executing anything after a call to system()
我对使用C很新,但基本上,我想执行以下行:
int a = system("python -m plotter");
将启动我开发的python模块。但是,我希望我的c程序的其余部分继续运行而不是等待命令完成执行(python应用程序处于无限循环,因此它不会自动关闭)。有没有办法用C / C ++做到这一点?
更新 解决方案是:
int a = system("start python -m plotter &");
答案 0 :(得分:33)
system()
只是将其参数传递给shell(在类Unix系统上,通常是/bin/sh
)。
试试这个:
int a = system("python -m plotter &");
当然system()
返回的值不是python脚本的退出状态,因为它还没有完成。
这可能仅适用于类Unix系统(可能包括MacOS);特别是,它可能不适用于MS Windows,除非你在Cygwin下运行。
在Windows上,system()
可能会调用cmd.exe
,它不接受在类Unix系统上使用相同语法的命令。但Windows start
命令应该可以完成这项工作:
int a = system("start python -m plotter");
只要您编写特定于Windows的代码(start
将无法在Unix上运行,除非您的start
中恰好有$PATH
命令),您可以考虑使用一些较低级别的Windows功能,可能是通过调用StartProcess
。这更复杂,但它可能会让您更好地控制流程的执行方式。另一方面,如果system()
符合您的要求,您也可以使用它。
答案 1 :(得分:4)
标准库中没有办法,但如果你的操作系统支持它,你可以派出或创建一个在后台运行它的独立线程。
答案 2 :(得分:4)
我相信如果你添加'&'在命令结束时它将起作用。 '&安培;'告诉命令在后台运行
int a = system("python -m plotter &");
答案 3 :(得分:2)
"系统" Linux上的命令只有在完成自身执行后才能执行其余的代码。
如果要同时处理,则应使用fork()。
答案 4 :(得分:1)