#include <stdlib.h> int mkstemp(char *template); int mkostemp (char *template, int flags);
glibc 向けの機能検査マクロの要件 (feature_test_macros(7) 参照):
mkstemp():
_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 500
mkostemp():
_GNU_SOURCE
引数 template で指示する文字列の後ろの 6 文字は XXXXXX である必要がある。 この部分がファイル名を他と重ならないようにする文字で置き換えられる。 template は書き換えられるため、文字列定数ではなく文字配列として 宣言するようにしなければならない。
ファイルは許可モード 0600 で作成され、所有者のみが読み書き可能である (glibc バージョン 2.06 以前では、ファイルは許可モード 0666 で作成され、 全てのユーザが読み書き可能であった)。 返されるファイルディスクリプタで、このファイルへの読み書き両方のアクセスが 可能である。 呼び出し者がそのファイルを作成するプロセスであることを保証するために、 ファイルは open(2) の O_EXCL フラグ付きでオープンされる。
mkostemp() は mkstemp() と同様だが、 open(2) に渡されるフラグ O_APPEND, O_SYNC など) を flags で指定できる点が異なる
これらの関数は open(2) に書かわれているエラーのいずれかで失敗することもある。
より一般的には、 mkstemp() の POSIX 規定ではファイルモードについて何も述べていない。 従って、アプリケーションは mkstemp() (や mkostemp()) を呼び出す前にファイルモード生成マスク (umask(2) 参照) が適切に設定されているか確認するべきである。
mktemp() のプロトタイプ宣言は、libc4, libc5, glibc1 では <unistd.h> に含まれる; glibc2 では POSIX.1 に準拠し <stdlib.h> に含まれている。