MKSTEMP(3) | Linux Programmer's Manual | MKSTEMP(3) |
名前
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) 参照):
_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
|| /* Since glibc 2.12: */ _POSIX_C_SOURCE >= 200112L
mkostemp(): _GNU_SOURCE
mkstemps(): _BSD_SOURCE || _SVID_SOURCE
mkostemps(): _GNU_SOURCE
説明
関数 mkstemp() は引数 template から他と重ならない一時ファイル名を生成し、そのファイルの作成とオープンを行い、そのファイルに対するオープン済みのファイルディスクリプタを返す。返り値
成功すると、これらの関数は一時ファイルのファイルディスクリプタを返す。エラーの場合は、-1 を返し、 errno を適切に設定する。エラー
- EEXIST
- すでに同じ名前を持つファイルが存在した。 template の内容は不定である。
- EINVAL
-
mkstemp() と
mkostemp() の場合:
template の最後の 6 文字が XXXXXX でなかった。この場合、
template は変更されない。
これらの関数は open(2) に書かれているエラーのいずれかで失敗することもある。
バージョン
mkostemp() は glibc 2.7 以降で利用できる。 mkstemps() と mkostemps() は glibc 2.11 以降で利用できる。準拠
mkstemp(): 4.3BSD, POSIX.1-2001.注意
glibc バージョン 2.06 以前では、ファイルは許可モード 0666 で作成され、全てのユーザが読み書き可能であった。この古い動作は、セキュリティ上のリスクになり得る。特に、他の UNIX では許可モードとして 0600 を使うため、プログラムを移植する際、この細かな違いを見落とす可能性があるからだ。 POSIX.1-2008 では、ファイルを許可モード 0600 で作成することが必須要件として追加された。関連項目
mkdtemp(3), mktemp(3), tempnam(3), tmpfile(3), tmpnam(3)この文書について
この man ページは Linux man-pages プロジェクトのリリース 3.51 の一部である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。2012-12-21 | GNU |