Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_all
名前
tmpnam, tmpnam_r - 一時ファイルの名前を作成する
書式
#include <stdio.h> char *tmpnam(char *s); char *tmpnam_r(char *s); glibc 向けの機能検査マクロの要件 (feature_test_macros(7) 参照): tmpnam_r() glibc 2.19 以降: _DEFAULT_SOURCE Up to and including glibc 2.19: _BSD_SOURCE || _SVID_SOURCE
説明
注意: これらの関数の使用は避けること。代わりに mkstemp(3) か tmpfile(3) を使うこと。 tmpnam() 関数は、ファイル名に使える文字列へのポインターを返す。 ある時点では同じ名前を持 つファイルが存在しないファイル名が返されるので、 幼稚なプログラマはこの文字列が一時ファイ ルのファイル名として 適していると考えるかもしれない。 引数 s が NULL なら、この名前は内部 の静的バッファーに作成され、 次に tmpnam() 関数が呼び出された時に上書きされる。 s が NULL でなければ、ファイル名は s が指す (少なくとも L_tmpnam の長さを持つ) 文字配列にコピーさ れ、 成功した場合は s が返される。 作成されるパス名は、ディレクトリの部分に P_tmpdir が使われる。 (L_tmpnam と P_tmpdir は、以下で説明する TMP_MAX 同様 <stdio.h> で定義されている。) The tmpnam_r() function performs the same task as tmpnam(), but returns NULL (to indicate an error) if s is NULL.
返り値
これらの関数は一意な一時ファイル名へのポインターを返す。 一意なファイル名が作成できなかっ た場合は NULL を返す。
エラー
エラーは定義されていない。
属性
この節で使用されている用語の説明については、 attributes(7) を参照。 ┌─────────────────┬───────────────┬──────────────────────────┐ │インターフェース │ 属性 │ 値 │ ├─────────────────┼───────────────┼──────────────────────────┤ │tmpnam() │ Thread safety │ MT-Unsafe race:tmpnam/!s │ ├─────────────────┼───────────────┼──────────────────────────┤ │tmpnam_r() │ Thread safety │ MT-Safe │ └─────────────────┴───────────────┴──────────────────────────┘
準拠
tmpnam(): SVr4, 4.3BSD, C89, C99, POSIX.1-2001. POSIX.1-2008 は tmpnam() を廃止予定とし ている。 tmpnam_r() is a nonstandard extension that is also available on a few other systems.
注意
tmpnam() 関数は最大 TMP_MAX 回まで、呼び出される度に異なる文字列を作成する。 TMP_MAX 回以 上呼び出された場合、その動作は実装依存である。 これらの関数は推測が難しい名前を生成するが、それにもかかわらず、パス名が返されてから、プロ グラムがそのファイルをオープンするまでの間に、別のプログラムが同じパス名で、ファイルを open(2) で作成したり、シンボリックリンクを作成したりする可能性がある。 これはセキュリティ ホールにつながる可能性がある。 そのような可能性を回避するためには、 open(2) の O_EXCL フ ラグを使ってパス名をオープンすればよい。 もっといいのは、 mkstemp(3) や tmpfile(3) を使 うことである。 移植性が必要な、スレッドを使ったアプリケーションでは、 _POSIX_THREADS か _POSIX_THREAD_SAFE_FUNCTIONS が定義されている場合に、 tmpnam() 関数を NULL 引数で呼び出し てはならない。
バグ
決してこれらの関数を使用しないこと。代わりに mkstemp(3) か tmpfile(3) を使うこと。
関連項目
mkstemp(3), mktemp(3), tempnam(3), tmpfile(3)
この文書について
この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの 説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。 2017-09-15 TMPNAM(3)