Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_all bug

名前

       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_tmpnamP_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)