gh4*_*h4x 29 c c++ system call hang
我对使用C很新,但基本上,我想执行以下行:
int a = system("python -m plotter");
Run Code Online (Sandbox Code Playgroud)
这将启动我开发的python模块.但是,我希望我的c程序的其余部分继续运行而不是等待命令完成执行(python应用程序处于无限循环,因此它不会自动关闭).有没有办法用C/C++做到这一点?
更新: 解决方案是:
int a = system("start python -m plotter &");
Run Code Online (Sandbox Code Playgroud)
Kei*_*son 35
system()简单地将其参数传递给shell(通常在类Unix系统上/bin/sh).
试试这个:
int a = system("python -m plotter &");
Run Code Online (Sandbox Code Playgroud)
当然返回的值system()不是python脚本的退出状态,因为它还没有完成.
这可能仅适用于类Unix系统(可能包括MacOS); 特别是,它可能不适用于MS Windows,除非你在Cygwin下运行.
在Windows上,system()可能会调用cmd.exe,它不接受在类Unix系统上使用相同语法的命令.但Windows start命令应该完成这项工作:
int a = system("start python -m plotter");
Run Code Online (Sandbox Code Playgroud)
只要您正在编写特定start于Windows的代码(除非您碰巧start在您的命令中$PATH,否则无法在Unix上运行),您可以考虑使用某些较低级别的Windows功能,也许可以通过调用StartProcess.这更复杂,但它可能会让您更好地控制流程的执行方式.另一方面,如果system()符合您的要求,您也可以使用它.
我相信,如果在命令末尾添加“&”,它将起作用。'&'告诉命令在后台运行
int a = system("python -m plotter &");
Run Code Online (Sandbox Code Playgroud)