我寫了一些測試代碼使用Proc::Daemon
,什麼我的測試代碼是像以前一樣:爲什麼我的程序在使用Proc :: Daemon時無法寫入文件?
#! /usr/bin/perl
use strict;
use warnings;
use Proc::Daemon;
Proc::Daemon::Init();
my $continue = 1;
$SIG{TERM} = sub { $continue = 0 ; }
while ($continue) {
sleep(5) ;
&greeting ;
}
sub greeting {
open (FH, ">>/home/daogu/foo") or die "can't open it" ;
print FH "hello word\n" ;
close FH ;
}
後,我開始了玩具守護,我發現沒有什麼實際已被寫入「foo
」。有人可以解釋爲什麼會發生這種情況?謝謝。
顯然$繼續變爲0有時你從‘休眠5’醒了。一些基本的調試可能會幫助你瞭解正在發生的事情,並且可能花費的時間少於切割到網站中的時間。 – jrockway 2009-08-16 15:56:13
我想你想在第9行末尾加一個分號:'$ SIG {TERM} = sub {$ continue = 0; };'這可能是一個錯字,我不認爲這是根本問題。 – Telemachus 2009-08-16 16:13:36
使用'open()'的三個參數形式。 – 2009-08-16 16:29:41