• 締切済み

popen使用時のエラー出力を出さないようにしたい (Solaris C言語)

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)の場合もエラーメッセージを出さないようにする方法ってありますか?

みんなの回答

  • shige_70
  • ベストアンサー率17% (168/946)
回答No.1

私の所では再現できませんでした( (2)でも(1)と同じ結果になる)。 回避策は、目的によって異なると思いますが、、、 一般的に考えられる方法としては、 ・popen(),pclose() の代わりに pipe(),fork(),execlp()等を使う ・popen()のコマンドの出力は一旦バッファにため込み、pclose()の返り値を見てから処理する などがあると思います。

関連するQ&A

専門家に質問してみよう