【发布时间】:2009-03-23 04:15:09
【问题描述】:
给你一个IO::File 对象或一个typeglob(\*STDOUT 或Symbol::symbol_to_ref("main::FH"));您将如何确定它是读句柄还是写句柄?无法扩展接口以传递此信息(我正在覆盖close 以在实际关闭之前添加对flush 和sync 的调用)。
目前我正在尝试flush 和sync 文件句柄并忽略错误"Invalid argument"(这是我尝试flush 或sync 读取文件句柄时得到的):
eval { $fh->flush; 1 } or do {
#this seems to exclude flushes on read handles
unless ($! =~ /Invalid argument/) {
croak "could not flush $fh: $!";
}
};
eval { $fh->sync; 1 } or do {
#this seems to exclude syncs on read handles
unless ($! =~ /Invalid argument/) {
croak "could not sync $fh: $!";
}
};
【问题讨论】:
-
+1 好问题!我不知道我什么时候会使用它,但我很想知道有人需要它。
-
Ext4 带来了 Ext3 隐藏了一段时间的问题。有关背景,请参阅 thunk.org/tytso/blog/2009/03/15/dont-fear-the-fsync 和正在进行的 p5p 线程 (xray.mpe.mpg.de/mailing-lists/perl5-porters/2009-03/…)。
标签: perl filehandle