EN JA
POSIX_FALLOCATE(2)
POSIX_FALLOCATE(2) FreeBSD System Calls Manual POSIX_FALLOCATE(2)

名称

posix_fallocateファイルの領域のための記憶域をあらかじめ割り付ける

ライブラリ

Standard C Library (libc, -lc)

書式

#include < fcntl.h>

int
posix_fallocate( int fd, off_t offset, off_t len);

解説

fd によって参照されるファイルの範囲 offset から offset + len のための必要とされる記憶域は、成功して返るとき、割り付けられていることが保証されています。すなわち、 posix_fallocate() が成功して返るなら、指定されたファイルデータへのその後の書き込みは、ファイルシステムの記憶域メディアの空き空間の不足のために失敗しません。指定された範囲の既存のファイルデータは、変更されません。 offset + len が現在のファイルサイズを超えているなら、 posix_fallocate() は、ファイルサイズを offset + len に調整します。そうでなければ、ファイルサイズは、変更されません。

posix_fallocate() によって割り付けられた空間は、ファイルのサイズを切り詰める creat(2) または open(2) への成功する呼び出しによって解放されます。 posix_fallocate() を通して割り付けられた空間は、ファイルサイズを offset + len より小さいサイズまで減少させる ftruncate(2) への成功する呼び出しによって解放されます。

戻り値

成功すれば、 posix_fallocate() は、0 を返します。失敗すれば、-1 を返し、エラーを示すために errno を設定します。

エラー

あり得る失敗の状態は、次の通りです:
[ EBADF]
fd 引数が有効なファイル記述子ではありません。
[ EBADF]
fd 引数が書き込みパーミッションなしでオープンされたファイルを参照しています。
[ EFBIG]
offset + len の値が最大のファイルサイズより大きいです。
[ EINTR]
シグナルが、実行の間に捕獲されました。
[ EINVAL]
len 引数が 0 または offset 引数が 0 未満でした。
[ EIO]
ファイルシステムから読み込むか、またはファイルシステムに書き込んでいる間に I/O エラーが起こりました。
[ ENODEV]
fd 引数が通常のファイルを参照していません。
[ ENOSPC]
ファイルシステム記憶域メディアに十分な空き空間が残っていません。
[ ESPIPE]
fd 引数がパイプまたは FIFO に関連しています。

規格

posix_fallocate() システムコールは、 IEEE Std 1003.1-2004 (“POSIX.1”) に適合しています。

歴史

posix_fallocate() 関数は、 FreeBSD 9.0 で登場しました。

作者

posix_fallocate() と、このマニュアルページは、初めに Matthew Fleming <mdf@FreeBSD.org>によって書かれました。
February 25, 2012 FreeBSD