我知道system()在内部调用“CreateProcess()”。
但是从应用程序的角度来看,我看到了它的一个主要区别。 我们来看下面的示例代码片段。
VC ++ Code snippet ::
Main()
{
//Line 1 code....
//Line2 code.....
............
CreateProcess(); // Used to launch some app which needs to be kept running till the entire //program finishes.
LaunchWindowsMediaPlayer();
...
}
}
Main()
{
//Line 1 code....
//Line2 code.....
............
std::system(); // // Same as above -- Used to launch some app which needs to be kept running //till the entire program finishes.
LaunchWindowsMediaPlayer();
...
}
CreateProcess()USage :
如第一段代码所示,如果我在此代码中调用“CreateProcess()”,那么在启动应用程序uisng CreateProcess()之后,控件将立即转到下一行并调用LaunchWindowsMediaPlayer();.
但是在system()(第二个代码片段)的情况下,控件只有在完成系统执行后才会从system()返回(0应该这样做。
但是如果你有一个用例,你需要运行一些需要在整个代码中保持运行的帮助应用程序,那么就不可能使用system()API。
有没有办法使用system()API实现这个目标?
答案 0 :(得分:1)
使用ShellExecuteEx()API。而不是system()。
答案 1 :(得分:0)
这取决于底层系统(例如Windows,Unix等)。库函数system
将字符串传递给命令解释器,命令解释器然后根据其约定解释参数。在Windows中,通常使用命令start
来完成,因此,不是传递"mycommand args"
,而是传递"start /B mycommand args"
; /B
是为了防止创建新窗口。 (请注意,我实际上没有尝试过这个;我在这个领域的经验是在Unix中,只需要&
后面的命令。但根据文档,它应该可以工作。)