Manpages

名 前

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/ に 書 か れ て い る 。