MKSTEMP
Section: Linux Programmer's Manual (3)
Updated: 2007-07-26
Index
JM Home Page
roff page
名前
mkstemp - 他と重ならない名前を持つテンポラリファイルを作成する
書式
#include <stdlib.h>
int mkstemp(char *template);
glibc 向けの機能検査マクロの要件
(feature_test_macros(7)
参照):
mkstemp():
_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 500
説明
関数
mkstemp()
は引数 template から他と重ならない
テンポラリファイル名を作成する。引数 template で指示する文字列
の後ろの 6 文字は XXXXXX である必要がある。この部分がファイル名を他と重ならない
ようにする文字で置き換えられる。ファイルはアクセスモードがリード/ライト、
そして許可モードが0666 (glibc 2.0.6 及びそれ以前の場合)、 0600 (glibc 2.0.7
及びそれ以降)で作成される。
template
は書き換えられるため、文字列定数ではなく文字配列として宣言するようにしなければならない。
mkstemp()
が正常終了する時は、われわれが唯一のユーザーであることを保証するために、
テンポラリファイルは
open(2)
の
O_EXCL
属性でオープンされる。
返り値
成功すると、関数
mkstemp()
はテンポラリファイルの
ファイルディスクリプタを返す。エラーの場合は、-1 を返し、
errno
を適切に設定する。
エラー
- EEXIST
-
すでに同じ名前を持つファイルが存在した。
template の内容は不定である。
- EINVAL
-
引数 template で指示された文字配列の後ろの 6 文字が XXXXXX でない。
template の内容は変化しない。
準拠
4.3BSD, POSIX.1-2001
注意
古い動作(許可モード 0666 でファイルを作成する)はセキュリティ上のリスク
になる場合がある。特に他の Unix では許可モードとして 0600 を使うため、
プログラムを移植する際、この細かな違いを見落とす可能性が
あるからだ。
より一般的には、POSIX 規定ではファイルモードについて何も述べていない。
従って、アプリケーションは
mkstemp()
を呼び出す前に umask が適切に設定されているか確認するべきである。
libc4, libc5, glibc1 でのプロトタイプ宣言は
<unistd.h>
に含まれる; glibc2 は POSIX.1 に従っており、
<stdlib.h>
に含まれている。
関連項目
mkdtemp(3),
mktemp(3),
tempnam(3),
tmpfile(3),
tmpnam(3)
Index
- 名前
-
- 書式
-
- 説明
-
- 返り値
-
- エラー
-
- 準拠
-
- 注意
-
- 関連項目
-
This document was created by
man2html,
using the manual pages.
Time: 04:31:52 GMT, November 19, 2007