Man page - truncate64(2)

Packages contains this manual

Available languages:

en fr pl nl ja ru ro de

Manual

TRUNCATE

名 前
書 式
説 明
返 り 値
エ ラ ー
準 拠
注 意
バ グ
関 連 項 目
こ の 文 書 に つ い て

名 前

truncate, ftruncate - 指 定 し た 長 さ に フ ァ イ ル を 切 り 詰 め る

書 式

#include <unistd.h>
#include <sys/types.h>

int truncate(const char * path , off_t length );
int ftruncate(int
fd , off_t length );

glibc 向 け の 機 能 検 査 マ ク ロ の 要 件 ( feature_test_macros (7) 参 照 ):

truncate ():

_XOPEN_SOURCE >= 500
|| /* glibc 2.12 以 降 : */ _POSIX_C_SOURCE >= 200809L
|| /* glibc 2.19 以 前 : */ _BSD_SOURCE

ftruncate ():

_XOPEN_SOURCE >= 500
|| /* glibc 2.3.5 以 降 : */ _POSIX_C_SOURCE >= 200112L
|| /* glibc 2.19 以 前 : */ _BSD_SOURCE

説 明

truncate () は path で 指 定 さ れ る フ ァ イ ル を 、 ftruncate () は fd で 参 照 さ れ る フ ァ イ ル を length バ イ ト の 長 さ に な る よ う に 延 長 す る 、 も し く は 切 り 詰 め る 。

も し 切 り 詰 め る 前 の フ ァ イ ル が length よ り 長 け れ ば 、 length バ イ ト を 越 え る 部 分 の デ ー タ は 失 わ れ る 。 も し 切 り 詰 め る 前 の フ ァ イ ル が length よ り 短 か け れ ば 、 伸 張 さ れ る 。 伸 張 さ れ た 部 分 を 読 ん だ 場 合 は ヌ ル バ イ ト ('\0') の 列 が 返 さ れ る 。

フ ァ イ ル オ フ セ ッ ト は 変 更 さ れ な い 。

大 き さ が 変 更 さ れ る と 、 フ ァ イ ル の st_ctime と st_mtime フ ィ ー ル ド (そ れ ぞ れ 最 終 状 態 変 更 時 刻 、 最 終 修 正 時 刻 ; inode (7) 参 照 ) が 更 新 さ れ る 。 ま た 、 set-user-ID と set-group-ID の モ ー ド ビ ッ ト が ク リ ア さ れ る か も し れ な い 。

ftruncate () の 場 合 、 フ ァ イ ル は 書 き 込 み 用 に 開 い て い な け れ ば な ら な い 。 truncate () の 場 合 、 フ ァ イ ル は 書 き 込 み 可 能 で な け れ ば な ら な い 。

返 り 値

成 功 し た 場 合 は 0 が 返 さ れ る 。 エ ラ ー の 場 合 は -1 が 返 さ れ 、 errno が 適 切 に 設 定 さ れ る 。

エ ラ ー

truncate () で は 以 下 の エ ラ ー コ ー ド が 定 義 さ れ て い る 。

EACCES

パ ス で 指 定 さ れ て い る デ ィ レ ク ト リ に 検 索 許 可 の な い も の が あ る (訳 注 :x ビ ッ ト が 立 っ て い な い )。 あ る い は 、 指 定 さ れ た フ ァ イ ル に 対 す る 書 き 込 み 許 可 を 持 っ て い な い 。 ( path_resolution (7) も 参 照 の こ と )

EFAULT

引 数 path が プ ロ セ ス に 割 り 当 て ら れ て い る ア ド レ ス 空 間 外 を 指 し て い る 。

EFBIG

引 数 length が 最 大 フ ァ イ ル サ イ ズ よ り 大 き い 。 (XSI)

EINTR

完 了 待 ち で 停 止 (block) し て い る 間 に 、 呼 び 出 し が シ グ ナ ル ハ ン ド ラ ー に よ り 割 り 込 ま れ た 。 fcntl (2) と signal (7) を 参 照 。

EINVAL

引 数 length が 負 数 で あ る か 、 最 大 フ ァ イ ル サ イ ズ よ り 大 き い 。

EIO

inode の 更 新 時 に I/O エ ラ ー が 発 生 し た 。

EISDIR

指 定 さ れ た フ ァ イ ル は デ ィ レ ク ト リ で あ る 。

ELOOP

パ ス 名 を 解 釈 す る 際 に シ ン ボ リ ッ ク リ ン ク が 多 す ぎ た 。

ENAMETOOLONG

パ ス 名 中 の デ ィ レ ク ト リ 名 が 255 文 字 を 越 え て い る 、 も し く は パ ス 名 全 体 が 1023 文 字 を 越 え て い る 。

ENOENT

指 定 さ れ た 名 前 の フ ァ イ ル が 存 在 し な い 。

ENOTDIR

パ ス 名 の 構 成 要 素 が デ ィ レ ク ト リ で は な い 。

EPERM

下 層 に あ る フ ァ イ ル シ ス テ ム で は 、 現 在 の フ ァ イ ル 長 を 越 え て フ ァ イ ル を 伸 長 す る こ と が で き な い 。

EPERM

操 作 が file seal に よ り 禁 止 さ れ て い る 。 fcntl (2) 参 照 。

EROFS

フ ァ イ ル が 読 み 込 み 専 用 (read only) の フ ァ イ ル シ ス テ ム 上 に あ る 。

ETXTBSY

フ ァ イ ル が 実 行 中 の 実 行 フ ァ イ ル で あ る 。

ftruncate () に も 同 様 の エ ラ ー が 適 用 さ れ る 。 但 し 、 path に 関 す る エ ラ ー の 場 合 は 、 フ ァ イ ル デ ィ ス ク リ プ タ ー fd に 関 す る エ ラ ー と な る 。

EBADF

fd が 適 切 な フ ァ イ ル デ ィ ス ク リ プ タ ー で な い 。

EBADF ま た は EINVAL

fd で 指 定 さ れ て い る も の が 書 き 込 み モ ー ド で 開 か れ て い な い 。

EINVAL

fd does not reference a regular file or a POSIX shared memory object.

EINVAL ま た は EBADF

The file descriptor fd is not open for writing. POSIX permits, and portable applications should handle, either error for this case. (Linux produces EINVAL .)

準 拠

POSIX.1-2001, POSIX.1-2008, 4.4BSD, SVr4 (こ れ ら の コ ー ル は 4.2BSD で 初 め て 登 場 し た )。

注 意

ftruncate () can also be used to set the size of a POSIX shared memory object; see shm_open (3).

「 説 明 」 の 節 で 述 べ た 詳 細 は XSI 準 拠 の シ ス テ ム に つ い て の も の で あ る 。 XSI 非 準 拠 の シ ス テ ム の 場 合 、 POSIX 標 準 は ftruncate () に 対 し て length が フ ァ イ ル の 長 さ よ り 長 か っ た 場 合 、 エ ラ ー を 返 す か フ ァ イ ル を 伸 張 す る か の 二 つ の 動 作 を 許 容 し て い る 。 truncate () に 対 し て は 全 く 規 定 さ れ て い な い 。 ほ と ん ど の UNIX 実 装 と 同 様 、 Linux は ネ イ テ ィ ブ (Linux 由 来 ) の フ ァ イ ル シ ス テ ム の 扱 い で は XSI 要 求 仕 様 に し た が っ て い る 。 し か し な が ら 、 い く つ か の 非 ネ イ テ ィ ブ の フ ァ イ ル シ ス テ ム で は 、 truncate () や ftruncate () を 使 っ て 現 在 の フ ァ イ ル 長 を 越 え て フ ァ イ ル を 伸 長 す る こ と が で き な い 。 Linux で の 有 名 な 例 と し て は VFAT が あ る 。

元 々 の Linux の truncate () と ftruncate () シ ス テ ム コ ー ル は 大 き な フ ァ イ ル オ フ セ ッ ト を 扱 え る よ う に 設 計 さ れ て い な か っ た 。 そ の 結 果 、 大 き な フ ァ イ ル フ ァ イ ル を 扱 う こ と が で き る truncate64 () と ftruncate64 () シ ス テ ム コ ー ル が Linux 2.4 で 追 加 さ れ た 。 た だ し 、 glibc を 使 っ た ア プ リ ケ ー シ ョ ン で は こ れ ら の 詳 細 は 気 に す る 必 要 は な い 。 glibc の ラ ッ パ ー 関 数 は 新 し い シ ス テ ム コ ー ル が 利 用 で き る 場 合 に は そ れ ら を 利 用 す る よ う に な っ て い る か ら で あ る 。

い く つ か の 32 ビ ッ ト ア ー キ テ ク チ ャ ー で は 、 こ れ ら の シ ス テ ム コ ー ル の 呼 び 出 し 時 の シ グ ネ チ ャ ー が 違 っ て い ま す 。 理 由 は syscall (2) で 説 明 さ れ て い る 通 り で す 。

バ グ

glibc 2.12 の ヘ ッ ダ ー フ ァ イ ル に は バ グ が あ り 、 ftruncate () の 宣 言 を 公 開 す る の に 必 要 な _POSIX_C_SOURCE の 最 小 値 が 200112L で は な く 200809L と な っ て い た 。 こ の バ グ は 、 こ れ 以 降 の バ ー ジ ョ ン の glibc で は 修 正 さ れ て い る 。

関 連 項 目

truncate (1), open (2), stat (2), path_resolution (7)

こ の 文 書 に つ い て

こ の man ペ ー ジ は Linux man-pages プ ロ ジ ェ ク ト の リ リ ー ス 5.10 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は https://www.kernel.org/doc/man-pages/ に 書 か れ て い る 。