名 前
mktemp − 他 と 重 な ら な い テ ン ポ ラ リ フ ァ イ ル 名 を 作 成 す る
書 式
#include <stdlib.h>
char *mktemp(char *template);
glibc 向 け の 機 能 検 査 マ ク ロ の 要 件 (feature_test_macros(7) 参 照 ):
mktemp():
glibc 2.12 以 降 :
_BSD_SOURCE || _SVID_SOURCE ||
(_XOPEN_SOURCE >= 500 ||
_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED)
&&
!(_POSIX_C_SOURCE >= 200112L ||
_XOPEN_SOURCE >= 600)
glibc 2.12 よ り 前 :
_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
説 明
決 し て こ の 関 数 は 使 用 し な い こ と 。 「 注 意 」 を 参 照 。 関 数 mktemp() は 引 数 template か ら 他 と 重 な ら な い テ ン ポ ラ リ フ ァ イ ル 名 を 作 成 す る 。 引 数 template で 指 示 す る 文 字 配 列 の 後 6文 字 は XXXXXX で あ る 必 要 が あ る 。 こ の 部 分 が フ ァ イ ル 名 を 他 と 重 な ら な い に す る よ う な 文 字 で 置 き 換 え ら れ る 。 template は 書 き 換 え ら れ る た め 、 文 字 列 定 数 で は な く 文 字 配 列 と し て 宣 言 す る よ う に し な け れ ば な ら な い 。
返 り 値
関 数 mktemp() は 常 に template を 戻 す 。 一 意 な 名 前 が 作 成 さ れ た 場 合 、 template の 最 後 の 6 バ イ ト に 他 と 重 な ら な い 名 前 (そ れ ま で に 出 て い な い 名 前 ) に な る よ う な 値 が 格 納 さ れ る 。 一 意 な 名 前 が 作 成 で き な か っ た 場 合 に は 、 template に は 空 文 字 列 が セ ッ ト さ れ 、 errno に エ ラ ー を 示 す 値 が セ ッ ト さ れ る 。
エ ラ ー
EINVAL 引 数 |
template で 指 示 さ れ た 文 字 列 の 後 6文 字 が XXXXXX で な い 。 |
準 拠
4.3BSD, POSIX.1−2001. POSIX.1−2008 で は mktemp() の 仕 様 が 削 除 さ れ て い る 。
バ グ
mktemp() を 決 し て 使 わ な い こ と 。 4.3BSD 系 の 実 装 や XXXXXX を プ ロ セ ス ID と 1文 字 に よ り 置 き 換 え る 方 式 で は せ い ぜ い 26の 名 前 を 返 す こ と が で き る に す ぎ な い 。 こ の 名 前 は 簡 単 に 推 測 で き る こ と や 、 そ の 名 前 が す で に 存 在 し て い る か ど う か テ ス ト し て 、 そ の フ ァ イ ル を オ ー プ ン す る 間 に 競 合 が あ る 事 か ら 、 mktemp() を 使 う の は 毎 回 セ キ ュ リ テ ィ リ ス ク を お か す こ と に な る 。 こ の 競 合 は mkstemp(3) を 使 う こ と で 避 け ら れ る 。
関 連 項 目
mkstemp(3), tempnam(3), tmpfile(3), tmpnam(3)
こ の 文 書 に つ い て
こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。