作者jlovet (Want 2 see u no more)
看板Perl
标题[问题] Perl的seek 或sysseek想制造sparse file
时间Mon May 12 20:50:20 2008
如果是C, 原本档案size 0
seek到100的位置写一些东西,那,档案大小会是100+你写的东西
然後生出来的档案是一个sparse file
#!/usr/bin/perl
open INDEX,">>","my.idx";
seek INDEX,100,0 or die "seek error";
print tell INDEX;
print INDEX "Hello World\n";
print tell INDEX;
close(INDEX);
在Perl里面,如果这样写,他只会把"Hello World\n"写到档案最前面
不会seek到100的位置,而且,用tell(INDEX) 两个都显示 -1
如果我把档案的模式改成
#!/usr/bin/perl
open INDEX,">","my.idx";
seek INDEX,100,0 or die "seek error";
print tell INDEX."\n";
print INDEX "Hello World\n";
print tell INDEX."\n";
close(INDEX);
这样子seek会有用,但是因为 > 档案就被truncate掉了
结果要用
open INDEX,"+<","my.idx"; 这样子,档案才可以seek,又不会被truncate
有人知道原因吗?
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.123.102.254