web-dev-qa-db-ja.com

C ++プログラムからコマンドラインコマンドを実行する方法

C++でコマンドライン「アスタリスク-rx "リロード"」を実行するにはどうすればよいですか?助けてください。例が必要です。私はubuntuサーバーで作業していますが、このコマンドラインをユーザーから(Webサービス内で)実行したいです。

助けが必要

24
Angel Dream

system()関数のささいなユースケースのように聞こえます:

system("asterisk -rx reload");

子プロセスを非常にきめ細かく制御する必要がある場合、より良い方法がありますが、これは簡単です。

この呼び出しはシェル(bashなど)を起動してコマンドを実行するため、reloadの前後の引用符を削除しました。これらは単一のWordにとっては無意味であり、シェルによって削除され、開始されたプログラムには表示されません。

24
unwind

system("asterisk -rx \"reload\"") は、標準出力またはプロセスからのエラーが必要ない場合、おそらく機能します。

プロセスの結果が必要な場合、 here は、Cの popen() 、または、C++アプローチの Boost.Process を見ることができます。

4
Alex Reynolds