open()
ファイルを小さくする方法はありますか?もちろん、追加モードで開くことも、最後までナビゲートして成長させることもできます。しかし、私が知っている限り、一般的なUnixスタイルのシステムコールインターフェイスを介してファイルを縮小する方法はありません。
私が知っている限り、これを行う唯一の方法は、より短い新しいファイルを作成し、古いrename()
ファイルを置き換えて偽にすることです。
ちょうどその場で新しいファイルを作成し、名前を変更するプロセスを経ずに、ファイルから直接動作するファイルエディタを作成することが可能であるという答えを見て確認したかったです。
私はいつもlibcのファイルAPIとUnixスタイルのシステムコールインターフェイスがファイルシステムの実装を簡素化し、断片化につながる可能性がある使用パターンを避けるためにファイルを縮小することを許可していないと思いました。
ベストアンサー1
DESCRIPTION
The truncate() and ftruncate() functions cause the regular file
named by path or referenced by fd to be truncated to a size of precisely
length bytes.
...
CONFORMING TO
POSIX.1-2001, POSIX.1-2008, 4.4BSD, SVr4 (these calls first appeared in 4.2BSD).
引き続き ftruncate では書き込み用にファイルを開く必要があり、 truncate ではファイルを書き込むことができる必要があると言います。