虽然循环和睡眠

时间:2011-04-20 10:14:23

标签: perl while-loop daemon usleep

以下是我的守护程序代码的剪辑:

package somepackage;

use Proc::Daemon;
use Time::HiRes qw/usleep/;
use constant{
  LOGFILE => '/var/log/.../work.log'
};

our $LOG;

unless($pid)
  {
  open($LOG,'>>'.LOGFILE);
  my $tm;
  }

while ($pid == 0)
  {

  $tm=usleep(999940); #to be more accurate, 1 sec
  print $somepackage::LOG $tm."\n";

  }

但问题是,有时候只有在10秒之后打印才能写入文件。我知道它为什么会发生,因为循环不等待打印写入文件,而是进入新循环然后休眠。如何在打印完成写入文件然后转到下一次迭代时等待?

1 个答案:

答案 0 :(得分:2)

我认为你在谈论同花顺 打开日志后立即拨打$LOG->autoflush(1)一次 (您可能还需要添加use IO::Handle。)

相关问题