- 締切済み
system関数でCシェルコマンドを実行した時のエラー抑制
CシェルコマンドをPerl上でsystem関数を使用し実行した時の、 エラーメッセージ抑制について教えてください。 ディレクトリ(DIR1をDIR2に)をコピーする際、 下記のようにしました。 system("cp -r DIR1 DIR2"); ここでもし、なんらかの原因でコピー失敗した場合、 「DIR1がありません。」などと、エラーメッセージが出力されます。 Cシェルでこの様なエラーメッセージを抑制するには cp -r DIR1 DIR2 >& /dev/null と、 することによって、エラーメッセージの抑制は可能になります。 これと、同じ事をPerlで行いたいと思っています。 ご回答よろしくお願いします
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.1
system で起動するときに使うシェルは sh でしたっけ? だったら cp -r DIR1 DIR2 > /dev/null 2>&1 です. エラーメッセージだけを消すなら cp -r DIR1 DIR2 2> /dev/null でいいかもしれない.
お礼
system("cp -r DIR1 DIR2 2> /dev/null"); で、エラーメッセージの出力を抑制する事が出来ました。 実は質問する前に、system("cp -r DIR1 DIR2 >& /dev/null"); は、試してみたんですが、sh:エラー番号が不明です。 というエラーが出ていました。 shの意味はこういうことだったんですね・・ 助かりました、有難うございました。