C++ でコマンドを使用してsystem
外部プログラムを呼び出していますが、それを使用するたびに、コマンドの終了後にコンソール ウィンドウが開いたり閉じたりします。
コンソール ウィンドウが開かないようにするにはどうすればよいですか? プラットフォームに依存しないソリューションになれば幸いです。また、コマンドが終了するまでプログラムを待機させたいと思います。
C++ でコマンドを使用してsystem
外部プログラムを呼び出していますが、それを使用するたびに、コマンドの終了後にコンソール ウィンドウが開いたり閉じたりします。
コンソール ウィンドウが開かないようにするにはどうすればよいですか? プラットフォームに依存しないソリューションになれば幸いです。また、コマンドが終了するまでプログラムを待機させたいと思います。
これはおそらく最も簡単で、おそらく最良の方法です。これにより、このコマンドの実行中にプログラムがフリーズしないようにすることもできます。最初に、次を使用して Windows ヘッダーを含めることを忘れないでください。
#include <Windows.h>
次に、次の関数を使用してコマンドを実行する必要があります。
WinExec("your command", SW_HIDE);
ノート; このWinExec
方法は、10 年以上にわたって廃止されてきました。とはいえ、今日も元気に動いています。必要でない場合は、このメソッドを使用しないでください。
...使用したくない方法の代わりに;
system("your command");
Windowsを使用しているようです。
Linux (および一般的には *nix) では、 へのsystem
呼び出しをfork
およびへの呼び出しexec
にそれぞれ置き換えます。Windows では、Windows API にある種の spawn-a-new-process 関数があると思います。ドキュメントを参照してください。
シェルコマンドや外部プログラムを実行している場合、実行しているコマンドや外部プログラムを持つプラットフォームに依存するため、プログラムをプラットフォーム非依存にするのは困難です。
エラー。CreateProcess
またはShellExecute
。
exec() は POSIX であるため、プラットフォームに依存しないように見えます。Windows では _exec() ですが、UNIX では exec() です: http://msdn.microsoft.com/en-us/library/431x4c1w(VS.71).aspxを参照してください。