perl中tail的brocken pipe

在perl中,使用open打开管道文件
open (LogF, "tail -n $line -f $file |") or die "open error\n";

之后对文件内容逐行处理,进程要一直运行下去(每天凌晨重启,因为$file在凌晨的时候会滚动文件名。
单是发现了几次,莫名奇妙的出现
tail: write error: Broken pipe
tail: write error

然后进程死掉。
46台机器,每天都有一两个死掉的。
哪位大侠知道怎么回事?

看到如下文章:
在调试数据库模块和WNC模块历史数据通讯的时候,由于WNC模块管道接收来不及(可能是WNC和上位机的SOCKET连接失败,没有及时取走管道中的历史数据),经常出现broken pipe错误,同时导致数据库模块异常退出。
   知道了问题就好办了。UNIX的系统是采用信号机制向进程通知这种系统错误的,13 SIGPIPE 的默认操作是Exit,所以在程式里面写一个自己的信号处理函数,不让进程退出就OK。但是值得注意的是在截获一次信号以后,系统会把信号处理又恢复到默认状态,所以需要再次配置。另外,对于多线程,我是在主线程里面做的信号处理,其他线程没有做,但是我理解信号是发给进程的,所以应该只要有一个线程处理了信号就能够。

tail打开的文件的写操作的确比较大,单是4个CPU8G内存,整体负载一直在20%以下,应该不会处理不了呀?(对tail打开的文件里面的处理相当简单)