2

perldoc で提供されている解決策に従って、エミュレートしようとしてtail -fいますが、期待どおりに動作していません。以下のコードは、最初にすべての行を印刷できますが、新しく追加された行は印刷できません。ここで何か不足している場合は詳しく教えてください。

#!/usr/bin/perl
open (LOGFILE, "aa") or die "could not open file reason $! \n";

for (;;)
{
        seek(LOGFILE,0,1);  ### clear OF condition        
        for ($curpos = tell(LOGFILE); <LOGFILE>; $curpos = tell(LOGFILE)) 
        {
                print "$_ \n";
        }

        sleep 1;
        seek(LOGFILE,$curpos,0); ### Setting cursor at the EOF
}
4

1 に答える 1

1

私にとってはうまくいきます。どうやって更新してい"aa"ますか?bufferedへの書き込みの場合、データはすぐには表示されません"aa"。別の端末で次のことを試して、更新が表示されるかどうかを確認してください。

while ( 1 )
echo "test" >> aa
end

perl を使用して を更新している場合は、バッファリングと無効にする方法に関する このaaセクションを確認してください。

于 2012-05-04T02:46:05.757 に答える