2010-12-04 15 views
1

ファイルのバイト範囲が本当に存在するのか無効であるのかを少なくともテストする必要があります。スパースファイルにアクセスするためのオペレーティングシステムAPI?

主要なオペレーティングシステム:Unix(Linux/MacOSX/FreeBSD)およびWindowsで動作する必要があります。

私はまだファイルに穴を開ける方法がないと思いますか、あるいはファイルシステム固有のAPIと提案がありますか?これはログファイルにとっても非常に優れています。

答えて

2

Windowsでは、FSCTL_GET_RETRIEVAL_POINTERSを使用して、ファイルクラスタとディスクの間のマッピングを見つけることができます。

対応のLinux(そしておそらく他のいくつかのposixes)IOCTLは、私がスパース性をテストするための無移植性のある方法を知っているFIBMAP

+0

はFIBMAPに関するブログ記事です:http://smackerelofopinion.blogspot.com/2009/06/fibmap-ioctl-file-system-block-number.html – dmeister

+0

は、Unixのために5年かかった(または45歳と言うことができます?)を使ってAPIを追加します。 これは "fallocate"と呼ばれ、Linuxカーネルのほぼすべてのファイルシステムで使用されています。うわーと人々は窓について不平を言う。 – Lothar

0

です。穴の付いたファイルを作成するには、0の穴の上に書き込むのではなく、seek()にする必要があります。これは明らかに、新しいファイルを作成したり、古いファイルを拡張する場合にのみ機能します。既存のゼロにseek()を使用すると、何も行われません。ここで

関連する問題