而循环和睡眠



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

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";
  }

,但问题是,有时print只在10秒后才写入文件。我知道为什么会这样,因为cycle不会在print写入文件时等待,而是进行一个新的循环,然后休眠。当print完成对文件的写入并进入下一个迭代时,我该如何等待?

我想你说的是同花顺。
打开日志后,立即呼叫$LOG->autoflush(1)
(您可能还需要添加use IO::Handle)。

相关内容

  • 没有找到相关文章

最新更新