• 締切済み

system関数でCシェルコマンドを実行した時のエラー抑制

CシェルコマンドをPerl上でsystem関数を使用し実行した時の、 エラーメッセージ抑制について教えてください。 ディレクトリ(DIR1をDIR2に)をコピーする際、 下記のようにしました。 system("cp -r DIR1 DIR2"); ここでもし、なんらかの原因でコピー失敗した場合、 「DIR1がありません。」などと、エラーメッセージが出力されます。 Cシェルでこの様なエラーメッセージを抑制するには cp -r DIR1 DIR2 >& /dev/null と、 することによって、エラーメッセージの抑制は可能になります。 これと、同じ事をPerlで行いたいと思っています。 ご回答よろしくお願いします

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

system で起動するときに使うシェルは sh でしたっけ? だったら cp -r DIR1 DIR2 > /dev/null 2>&1 です. エラーメッセージだけを消すなら cp -r DIR1 DIR2 2> /dev/null でいいかもしれない.

nimblenk
質問者

お礼

system("cp -r DIR1 DIR2 2> /dev/null"); で、エラーメッセージの出力を抑制する事が出来ました。 実は質問する前に、system("cp -r DIR1 DIR2 >& /dev/null"); は、試してみたんですが、sh:エラー番号が不明です。 というエラーが出ていました。 shの意味はこういうことだったんですね・・ 助かりました、有難うございました。

関連するQ&A