Вот фрагмент кода моего демона:
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 секунд.Я знаю, почему это происходит, потому что цикл не ждет, пока print пишет в файл, вместо этого он переходит на новый цикл и затем спит.Как я могу ждать, пока print завершит запись в файл и затем перейдет к следующей итерации?