2012-01-20 2 views
4

最後に実行された呼び出しのステータスをsystem()から知りたいと思います。system()の最後の呼び出しが正常に実行されたかどうかを確認するには

私はので、私はコマンドhciconfig hci0 &> /dev/nullを実行するためにsystem()を使用Cプログラムで同じことをしたい

hciconfig hci0 &> /dev/null 
if [ "$?" -ne 0 ]; then 
. ./$BT_CLEAN 

を含む1つのスクリプトファイルを持っています。しかし、この実行されたコマンドのステータスをどのように知ることができますか?シェルスクリプトでは "$?"を使用しました。ここでCと同じ:最後のコマンドが正常に実行されたかどうかをどのように知ることができますか?

Iはman 3 systemを引用するC.

+1

用語が多少混乱しています。 「システムコール」は、カーネル内に完全にまたは大部分が実装されている関数です。 'open()'、 'read()'、 'fork()'、 'exec()'などの 'system()'関数は1つではありませんが、 、 'exec()'、 'waitpid()'のようなものです。シェルから実行するコマンドは、通常、「シェルユーティリティ」または「外部コマンド」と呼ばれます。 –

答えて

4

system("hciconfig hci0 &> /dev/null")使用:

system()エラーに戻り-1(例えばfork(2)が失敗した)、及びコマンドの リターン・ステータスさもなければ。

+0

は、システムコールが失敗した場合に-1を返します。 – user1089679

+0

@ user1089679:はい – NPE

+0

@ user1089679:いいえ、シェルで '$? 'と同じ値を返します。成功した場合は0、失敗した場合は通常+1ですが、それ以上である可能性があります。 'fork'呼び出しが失敗した場合にのみ-1を返します。これは、システムが大きな問題を抱えている場合にのみ発生します。 –

関連する問題