#include <stdio.h> char *tempnam(const char *dir, const char *pfx);
glibc 向けの機能検査マクロの要件 (feature_test_macros(7) 参照):
tempnam():
Since glibc 2.19:
_DEFAULT_SOURCE
Glibc 2.19 and earlier:
_BSD_SOURCE || _SVID_SOURCE
tempnam() 関数はファイル名として正しい文字列へのポインターを返す。 このファイル名を持つファイルは、 tempnam() がチェックした時点においては存在しない (しなかった)。 pfx が NULL でない 5 バイト以内の文字列であれば、 生成されるパス名のうちのファイル名の部分は pfx から始まるものになる。 生成されるディレクトリの部分は、「適切」でなければならない (大抵の場合、「適切」であるためにはまず少なくとも 書き込み可能でなければならない)。
適切なディレクトリの探索は、以下の手順にしたがって行われる。
tempnam() が返す文字列は malloc(3) を使って確保される。そのため、 free(3) で解放すべきである。
インターフェース | 属性 | 値 |
tempnam() | Thread safety | MT-Safe env |
SUSv2 では TMPDIR に付いて言及されていない。 glibc は、プログラムが set-user-ID されていない場合に限ってこれを用いる。 SVr4 では d) で使用されるディレクトリを /tmp と定めている (glibc もこの通りである)。
パス名を返すのに使用するメモリーを動的に確保するので、 tmpnam(3) と違い、 tempnam() はリエントラントであり、スレッドセーフである。
tempnam() 関数は最大 TMP_MAX 回まで、呼び出される度に異なる文字列を作成する (TMP_MAX は <stdio.h> で定義されている)。 もし TMP_MAX 回以上呼び出された場合、動作は実装依存である。
tempnam() は最大で pfx の先頭 5 バイトを使用する。
他と重ならない名前が見つけられなかった場合、glibc の tempnam() の実装はエラー EEXIST で失敗する。
[man1]
[man2]
[man3]
[man4]
[man5]
[man6]
[man7]
[man8]
[a]
[b]
[c]
[d]
[e]
[f]
[g]
[h]
[i]
[j]
[k]
[l]
[m]
[n]
[o]
[p]
[q]
[r]
[s]
[t]
[u]
[v]
[w]
[x]
[y]
[z]