私は私のテストコードはどのようなものであるか、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
」に書かれていない見つけました。誰がなぜこれが起こるのか説明できますか?ありがとう。
どうやら$が続くデーモンラインで、閉じたファイルハンドル用の$ FH上のデーモン線21 印刷()で拒否された許可は、いつかあなたが 『スリープ5』から目を覚ます前に0になります。いくつかの基本的なデバッグは、おそらくあなたが何が起こっているのかを理解するのに役立ちますし、おそらくウェブサイトに貼り付けるより時間がかかりませんでした。 – jrockway
私は、9行目の最後にセミコロンが必要だと思います: '$ SIG {TERM} = sub {$ continue = 0; }; 'これはタイプミスかもしれませんが、根本的な問題ではないと思います。 – Telemachus
は 'open()'の3つの引数形式を使います。 –