最近かなり流行っている「Linux プログラミングインタフェース」を読んでたら、lseek(2) の解説で Sparse File (スパースファイル) の話が出てきたので、実装が気になって調べてみた。 4 章 ファイル I/O:統一されたインタフェース 4.7 ファイルオフセットの変更: lseek() ファイル末尾を越えた位置へシークするとどうなるでしょうか? そしてその位置で I/O を実行すると? … (略) 意外 に思われるかもしれませんが、書き込みは可能なのです。 refs: https://www.oreilly.co.jp/books/9784873115856/ Sparse File とは 簡単に言うと、内部に NULL のかたまり(ファイルホール)を含むファイルのこと。こんなやつ。 1 2 # ls -shl sparse_file 4.0 K -rw-r-
![Sparse File (スパースファイル) の仕組み | harasou.github.io](https://cdn-ak-scissors.b.st-hatena.com/image/square/db1e7a8f07995a14b014fb0b876698544acc885f/height=288;version=1;width=512/http%3A%2F%2Fharasou.github.io%2Fimg%2F2016-03-24-linux-programming-interface.gif)