C++, для начала - если ты хочешь обновить файл, используй \'+<\'.
flock(STATS,8);
- такого вовсе делать не стоит, просто сделай close(STATS); - блок будет снят автоматом.
Окей, теперь посмотрим... ага..., пожалуй я бы сделал это так:
open(STATS,"+<$stats_file") or die;
binmode(STATS);
flock(STATS,2);
while(read(STATS,$data,$rec_size)){
# делаем с $data все чот хотим
}
seek(STAT,0,0); # - в начало файла;
truncate(STAT,0); # - рубим файл под ноль;
print STAT "Anything\\n";
close(STAT);
И все! Удачи.