【发布时间】:2012-05-06 23:08:44
【问题描述】:
我在 Perl(5.0 版本 8 版本 0)中有一个 TCP 服务器,它使用这个子例程来登录文件。
sub logger {
return if ($LOGFILE eq "") ;
my ($idt, $str) = @_ ;
unless( defined($str) ) {
$str = $idt ;
$idt = '' ;
}
my ($s,$m,$h,$J,$M,$A) = localtime(time()) ;
if(!open(OUT,">>$LOGFILE")) {
warn "logger:error open [$LOGFILE]:[$!]\n";
return;
}
if (!printf OUT "%4.4d/%2.2d/%2.2d %2.2d:%2.2d:%2.2d %s %s -> %s\n",
$A+1900, $M+1, $J, $h, $m, $s, $idt, $HOSTNAME, $str) {
warn "logger:error print [$LOGFILE]:[$!]\n";
return;
}
if (!close(OUT)) {
warn "logger:error close [$LOGFILE]:[$!]\n";
return;
}
}
所以在这个日志文件中有同时写入。 异常,我在 STDERR 中有这个错误:
printf() 在关闭的文件句柄上 logger :error print [/my/path/logFile.LOG]:[Bad File Descriptor]
打开没有任何错误!
我该如何解决这个问题?
【问题讨论】:
-
5.8 在 5.8.0 之后有 9 个维护版本。您是否尝试过升级到 5.8.9? (为 5.8.0 编译的模块可以与 5.8.9 一起使用。)
-
Perl 5.8.0 发布于 10 年前。连5.8.9都超过3岁了。
-
我知道...但我现在无法升级它。
-
在修订版 5 版本 10 颠覆 1 上也是如此
标签: perl filehandle