2012-01-12 16 views
18

C++でコマンドライン "asterisk -rx" reload ""を実行するにはどうすればよいですか?助けてください。私は例が必要です。私はubuntuサーバーで作業しています。ユーザー(Webサービス内)からこのコマンドラインを実行したいと思います。あなたは子プロセスの非常にきめの細かい制御が必要な場合は、より良い方法があるC++プログラムからコマンドラインコマンドを実行する方法

system("asterisk -rx reload"); 

が、この:

こと が

+1

本当にC++/CLIを意味しましたか?あなたは[C++ - cli]タグを誤って解釈して "C++コマンドラインインターフェイス"を意味しましたか?実際にLinux用のC++/CLI実装はありますか? – celtschk

答えて

21

system()機能のための些細なユースケースのような音に感謝助けが必要行かせるのは簡単です。

この呼び出しは、コマンドを実行するシェル(bashなど)を開始します。そのため、引用符を削除したのはreloadです。彼らは1つの単語のために無意味であり、シェルによって削除され、開始されたプログラムでは決して見られません。

+0

これは良い方法ですが、代わりの方法としてfork/execを使うことができます(より多くの労力が必要ですが全体的にはより強力です) – dreamlax

+0

私はそれをテストしていますbyt wkiring –

+0

私はサーバー上にWebサービスを持っており、アスタリスクはリロードしていません。どうして?ヘルプが必要です –

4

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

プロセスの結果が必要な場合は、hereがCのpopen()を使用する例、またはBoost.Processを使用してC++のアプローチが可能です。

+0

彼は、約7秒で私を打つ:) – LiMuBei

関連する問題