Man page - mkstemp(3)

Packages contains this manual

Available languages:

en fr pl ja ro de

Manual

MKSTEMP

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

名 前

mkstemp, mkostemp, mkstemps, mkostemps - 他 と 重 な ら な い 名 前 を 持 つ 一 時 フ ァ イ ル を 作 成 す る

書 式

#include <stdlib.h>

int mkstemp(char * template );

int mkostemp(char * template , int flags );

int mkstemps(char * template , int suffixlen );

int mkostemps(char * template , int suffixlen , int flags );

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

mkstemp ():

_XOPEN_SOURCE >= 500
|| /* Since glibc 2.12: */ _POSIX_C_SOURCE >= 200809L
|| /* Glibc versions <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE

mkostemp (): _GNU_SOURCE
mkstemps
():
/* Glibc since 2.19: */ _DEFAULT_SOURCE
|| /* Glibc versions <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
mkostemps
(): _GNU_SOURCE

説 明

関 数 mkstemp () は 引 数 template か ら 他 と 重 な ら な い 一 時 フ ァ イ ル 名 を 生 成 し 、 そ の フ ァ イ ル の 作 成 と オ ー プ ン を 行 い 、 そ の フ ァ イ ル に 対 す る オ ー プ ン 済 み の フ ァ イ ル デ ィ ス ク リ プ タ ー を 返 す 。

引 数 template で 指 示 す る 文 字 列 の 後 ろ の 6 文 字 は XXXXXX で あ る 必 要 が あ る 。 こ の 部 分 が フ ァ イ ル 名 を 他 と 重 な ら な い よ う に す る 文 字 で 置 き 換 え ら れ る 。 template は 書 き 換 え ら れ る た め 、 文 字 列 定 数 で は な く 文 字 配 列 と し て 宣 言 す る よ う に し な け れ ば な ら な い 。

フ ァ イ ル は 許 可 モ ー ド 0600 で 作 成 さ れ 、 所 有 者 の み が 読 み 書 き 可 能 で あ る 。 返 さ れ る フ ァ イ ル デ ィ ス ク リ プ タ ー で 、 こ の フ ァ イ ル へ の 読 み 書 き 両 方 の ア ク セ ス が 可 能 で あ る 。 呼 び 出 し 者 が そ の フ ァ イ ル を 作 成 す る プ ロ セ ス で あ る こ と を 保 証 す る た め に 、 フ ァ イ ル は open (2) の O_EXCL フ ラ グ 付 き で オ ー プ ン さ れ る 。

mkostemp () 関 数 は mkstemp () と 同 様 だ が 、 flags O_APPEND , O_CLOEXEC , O_SYNC の ビ ッ ト を 指 定 で き る 点 が 異 な る (意 味 は open (2) と 同 じ で あ る )。 フ ァ イ ル を 作 成 す る 際 、 mkostemp () は open (2) に 渡 す flags 引 数 に O_RDWR , O_CREAT , O_EXCL を 含 め る 。 そ の た め 、 mkostemp () に 渡 す flags 引 数 に こ れ ら の 値 を 含 め る 必 要 は な く 、 シ ス テ ム に よ っ て は エ ラ ー が 発 生 す る 点 に 注 意 す る こ と 。

mkstemps () 関 数 は mkstemp () と 同 様 だ が 、 template 内 の 文 字 列 に 長 さ が suffixlen 文 字 の 接 尾 辞 (suffix) が 含 ま れ る 点 が 異 な る 。 し た が っ て 、 template prefixXXXXXXsuffix の 形 式 と な る 。 文 字 列 XXXXXX の 部 分 は mkstemp () に よ り 更 新 さ れ る 。

mkostemps () と mkstemps () の 関 係 は 、 mkostemp () と mkstemp () の 関 係 と 同 じ で あ る 。

返 り 値

成 功 す る と 、 こ れ ら の 関 数 は 一 時 フ ァ イ ル の フ ァ イ ル デ ィ ス ク リ プ タ ー を 返 す 。 エ ラ ー の 場 合 は 、 -1 を 返 し 、 errno を 適 切 に 設 定 す る 。

エ ラ ー

EEXIST

す で に 同 じ 名 前 を 持 つ フ ァ イ ル が 存 在 し た 。 template の 内 容 は 不 定 で あ る 。

EINVAL

mkstemp () と mkostemp () の 場 合 : template の 最 後 の 6 文 字 が XXXXXX で な か っ た 。 こ の 場 合 、 template は 変 更 さ れ な い 。

mkstemps () と mkostemps () の 場 合 : template の 長 さ が (6 + suffixlen) 文 字 よ り 短 い 、 ま た は template の 接 尾 辞 の 直 前 の 6 文 字 が XXXXXX で は な か っ た 。

こ れ ら の 関 数 は open (2) に 書 か れ て い る エ ラ ー の い ず れ か で 失 敗 す る こ と も あ る 。

バ ー ジ ョ ン

mkostemp () は glibc 2.7 以 降 で 利 用 で き る 。 mkstemps () と mkostemps () は glibc 2.11 以 降 で 利 用 で き る 。

属 性

こ の 節 で 使 用 さ れ て い る 用 語 の 説 明 に つ い て は 、 attributes (7) を 参 照 。

Image grohtml-33037-1.png

準 拠

mkstemp (): 4.3BSD, POSIX.1-2001.

mkstemps (): 標 準 化 さ れ て い な い が 、 他 の い く つ か の シ ス テ ム に も 存 在 す る 。

mkostemp () と mkostemps (): glibc に よ る 拡 張 。

注 意

glibc バ ー ジ ョ ン 2.06 以 前 で は 、 フ ァ イ ル は 許 可 モ ー ド 0666 で 作 成 さ れ 、 全 て の ユ ー ザ ー が 読 み 書 き 可 能 で あ っ た 。 こ の 古 い 動 作 は 、 セ キ ュ リ テ ィ 上 の リ ス ク に な り 得 る 。 特 に 、 他 の UNIX で は 許 可 モ ー ド と し て 0600 を 使 う た め 、 プ ロ グ ラ ム を 移 植 す る 際 、 こ の 細 か な 違 い を 見 落 と す 可 能 性 が あ る か ら だ 。 POSIX.1-2008 で は 、 フ ァ イ ル を 許 可 モ ー ド 0600 で 作 成 す る こ と が 必 須 要 件 と し て 追 加 さ れ た 。

よ り 一 般 的 に は 、 mkstemp () の POSIX 規 定 で は フ ァ イ ル モ ー ド に つ い て 何 も 述 べ て い な い 。 従 っ て 、 ア プ リ ケ ー シ ョ ン は mkstemp () (や mkostemp ()) を 呼 び 出 す 前 に フ ァ イ ル モ ー ド 生 成 マ ス ク ( umask (2) 参 照 ) が 適 切 に 設 定 さ れ て い る か 確 認 す る べ き で あ る 。

関 連 項 目

mkdtemp (3), mktemp (3), tempnam (3), tmpfile (3), tmpnam (3)

こ の 文 書 に つ い て

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