電子書籍の厳選無料作品が豊富!

AAA/a というファイルがなかった場合

(1)poepn("ls AAA/a", "r" );
(2)poepn("ls AAA*/a", "r" );

を実行した時のそれぞれの出力メッセージは

(1)AAA/a: ファイルもディレクトリもありません。
(2)/bin/ls: No match.

となります。そこで、2> /dev/null を付け足して実行すると、(1)のエラーメッセージは消えるんですが、(2)の場合のエラーメッセージは出てしまいます。
(1)の場合も(2)の場合もエラーメッセージを出さないようにする方法ってありますか?

A 回答 (1件)

私の所では再現できませんでした( (2)でも(1)と同じ結果になる)。



回避策は、目的によって異なると思いますが、、、

一般的に考えられる方法としては、

・popen(),pclose() の代わりに pipe(),fork(),execlp()等を使う

・popen()のコマンドの出力は一旦バッファにため込み、pclose()の返り値を見てから処理する

などがあると思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!