• ベストアンサー

perlのファイルへの書き込みついて

perl scriptにて処理を/var/log/messages等に、 エラーや実行結果を出力したいと考えています。 messagesログは他のスクリプトも使っているので、 他のプロセスがmessagesログを使っていたらすぐに書き込まずに待機して その処理が終わった後に書き込みを行うようなことをやりたいのですが、 どのようにしたら可能でしょうか。 出来ればCPAN等は使わずperl標準の機能で実装できたらと考えています。 perlのバージョンは5でお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.1

ふつうプログラムが /var/log/messages に直接出力するようなことはしないような。 Sys::Syslogモジュールを使うとこだと思いますが CPANを使いたくないということであれば system()でloggerを呼び出すとかではないでしょうか。

noname#159383
質問者

お礼

早速の回答ありがとうございいます。 仰るとおり直接/var/log/messagesに直接書き込むのは乱暴と言うか・・・危険ですね。今回は回答の通り、system関数でloggerを呼び出すことにします。 ちなみに興味本位でご存知でしたら教えていただきたいのですが、 特定のファイルに対して別のプロセスによる書き込みがあった場合に、その対象のファイルの書き込みが終わるまで待機して、書き込みが終わった後にファイルの書き込みを行うような事は、perlで出来るんでしょうか? 質問ばかりですみません。

関連するQ&A

専門家に質問してみよう