2011-12-20 14 views
1

popen()が成功したかどうかを知ることができますか、シェルの実行が終了したか、または失敗しましたか?popen()が成功したかどうかを確認するには?

+0

、あなたは何を意味する "シェルを実行しています?" popenのmanページを確認しましたか? – Derek

+1

ドキュメンテーション... "popen()は、パイプへの読み書きに使用できるオープンストリームへのポインタを返します。そうでなければ、ヌルポインタを返し、errnoにエラー" – Joe

+0

[マニュアルページ](http://linux.die.net/man/3/popen)を確認してください。 –

答えて

4

popen return value:正常終了

、popenの()は、読み取りまたはパイプへの書き込みに使用することができるオープン ストリームへのポインタを返します。そうでなければ、 はヌルポインタを返し、エラーを示すためにerrnoをセットします。

fp = popen("ls *", "r"); 
if (fp == NULL) 
    /* Handle error */; 
+0

ありがとう!私が知る必要があるもの:D – user1104856

+0

そして、まさにmanページ 'man popen'を読んで見つけたものです。あなたは、ここで質問する前に、あなたのローカルドキュメントをチェックすることで、あなた自身(そして私たちの残りの人たち)を将来的に救うでしょう。 –

+1

シェルが実行しているコマンドが失敗する可能性があります。存在しないファイルを 'cat'しようとしている可能性があります。この場合、 'popen'は成功しています。シェルから戻り値を取得するには 'pclose'を使う必要があります。 –

2

Cコードでpopenを実行しているとすると、マニュアルページを確認できます。失敗した場合、popenはNULLを返し、それ以外の場合はファイルストリームを返します。

関連する問題