スポンサーリンク

TRUNCATE(2) FreeBSD システムコールマニュアル TRUNCATE(2)

名称

truncate, ftruncate − 指定した長さにファイルを切り捨てたり拡張したりする

ライブラリ

標準 C ライブラリ (libc, −lc)

書式

#include <unistd.h>

int

truncate(const char *path, off_t length);

int

ftruncate(int fd, off_t length);

解説

truncate() システムコールは、 path で指定されるファイルか fd で参照される ファイルのサイズが、 length バイトになるように切り捨てたり拡張します。 ファイルがこのサイズより大きい場合は、余分なデータが失われます。ファイル がこのサイズより小さい場合は、0 が書き込まれたように拡張されます。 ftruncate() では、ファイルが書込み用に開いている必要があります。

戻り値

成功して終了したときには値 0 を返します。そうでない場合、値 -1 が返され、 グローバル変数 errno が設定されてエラーを示します。

エラー

truncate() システムコールは、以下のような場合に処理を失敗します:

       [ENOTDIR]

パスの構成要素中にディレクトリ以外のものが含まれていま す。

[ENAMETOOLONG]
パス名の構成要素が 255 文字を越えているか、またはパス 名全体が 1023 文字を越えています。

[ENOENT]
指定されたファイルが存在しません。

[EACCES]
前置パス名の構成要素について検索許可が拒否されていま す。

[EACCES]
指定されたファイルにユーザが書き込めません。

[ELOOP]
パス名を変換するときに検出されたシンボリックリンクが多 すぎます。

[EISDIR]
指定されたファイルがディレクトリになっています。

[EROFS]
指定されたファイルは読取り専用ファイルシステム上にあり ます。

[ETXTBSY]
ファイルが、実行中のピュアプロシージャ (共有テキスト) ファイルです。

[EIO]
inode の更新をしている間に入出力エラーが発生しました。

[EFAULT]
path
引数が、プロセスに割り当てられたアドレス空間の範 囲外を指しています。

ftruncate() システムコールは、以下のような場合に処理を失敗します:

[EBADF]
fd
引数が有効な記述子ではありません。

[EINVAL]
fd
引数はファイルではなくソケットを参照しています。

[EINVAL]
fd
引数が書込み用に開いていません。

関連項目

open(2)

バグ

この呼出しは、ファイルのある範囲を放棄できるように一般化する必要がありま す。

truncate() を使用してファイルを拡張すると、移植性が失われます。

歴史

truncate() システムコールは、 4.2BSD で登場しました。

FreeBSD 10.0 June 4, 1993 FreeBSD 10.0

スポンサーリンク