在C++中调用"system"时取消控制台

Dan*_*ana 10 c++ console system system-calls

我正在使用systemC++中的命令来调用一些外部程序,每当我使用它时,控制台窗口会在命令完成后打开和关闭.

如何避免打开控制台窗口?如果解决方案可以与平台无关,我会很高兴.我也希望我的程序等到命令完成.

Tim*_*sée 5

这可能是最简单也许是最好的方法,这也可以使你的程序在运行此命令时不会冻结.首先不要忘记使用包含Windows标头;

#include <Windows.h>
Run Code Online (Sandbox Code Playgroud)

然后你需要使用以下函数来运行你的命令;

WinExec("your command", SW_HIDE); 
Run Code Online (Sandbox Code Playgroud)

注意; 该WinExec方法已被弃用了十多年.它今天仍然可以正常工作.如果不需要,则不应使用此方法.

...而不是你的方式希望使用;

system("your command");
Run Code Online (Sandbox Code Playgroud)

  • 鉴于WinExec已被弃用超过17年,我几乎没有把它称为"最佳"方式. (2认同)

Jon*_*ker 4

听起来你用的是windows。

在 Linux(以及一般的 *nix)上,我将分别system用对fork和 的调用替换对 的调用exec。在 Windows 上,我认为 Windows API 中有某种“生成新进程”函数——请参阅文档。

当您运行 shell 命令和/或外部程序时,您的程序很难独立于平台,因为它将取决于具有您正在运行的命令和/或外部程序的平台。