2010-11-23 29 views
2

在Perl中:收縮文件打開在讀/寫

我有一個文件打開讀/寫,與排他鎖。

open($f, "+< $filename");
flock($f, LOCK_EX);

如果我寫更多的數據比它以前持有的文件,該文件將增長。
如果我寫的數據較少,我的新內容就在開頭,但舊內容仍然在文件末尾。

這並不奇怪,但它不是我想要的。

是否有一個簡單的方法來縮小文件,而它是在讀/寫打開?基本上我想告訴它在這個字節位置結束文件。

我知道我可以用不同的方式打開它,而且我正在考慮這樣做,但是一行修復會很好。

+0

我建議測試open,flock,truncate等的結果。 – hpavc 2010-11-23 06:56:28

+0

@hpavc,​​或者使用[autodie](http://search.cpan.org/perldoc?autodie)。 – cjm 2010-11-23 07:42:22

回答

1

我居然不知道有關Perl,但由於ftruncate(2)將是C函數,也許this幫助?