私はProc::Daemonを使って簡単なテストデーモンを書きました。ここでは、デーモンは次のとおりです。PerlデーモンがSleep()で動作しない
#!/usr/bin/perl
use Proc::Daemon;
$daemon = Proc::Daemon->new(
work_dir => '/scripts/',
child_STDOUT => '/scripts/child.log',
child_STDERR => '+>>debugchild.txt',
pid_file => 'pid.txt',
exec_command => 'perl /scripts/test.pl'
);
foreach(@ARGV)
{
if (/install/i)
{
$Kid_1_PID = $daemon->Init;
}
elsif (/remove/i)
{
$stopped = $daemon->Kill_Daemon();
}
}
そしてここでは、テストでは、それが実行されるということです。
#!/usr/local/bin/perl
while (1) {
print "test\n";
sleep(1);
}
をwhileループがちょうどprint文で正常に動作しますが、私は睡眠を(追加時)。ログは空です。これはなぜでしょうか?
を| = 1は? – HighLife
バッファにファイルを送るのに十分なバイトがあるまで待機するのではなく、各書き込み後にバッファをフラッシュするようにPerlに指示します。 – ADW
最初の質問はこちら:http://perldoc.perl.org/perlfaq5.html – ADW