.\" Updated 2012-05-01, Akihiro MOTOKI <amotoki@gmail.com>
.\" Updated 2013-03-26, Akihiro MOTOKI <amotoki@gmail.com>
.\"
-.TH MKSTEMP 3 2012\-12\-21 GNU "Linux Programmer's Manual"
+.TH MKSTEMP 3 2014\-08\-19 GNU "Linux Programmer's Manual"
.SH 名前
mkstemp, mkostemp, mkstemps, mkostemps \- 他と重ならない名前を持つ一時ファイルを作成する
.SH 書式
\fBmkostemps\fP(): _GNU_SOURCE
.SH 説明
関数 \fBmkstemp\fP() は引数 \fItemplate\fP から他と重ならない一時ファイル名を生成し、 そのファイルの作成とオープンを行い、
-そのファイルに対するオープン済みのファイルディスクリプタを返す。
+ã\81\9dã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\81«å¯¾ã\81\99ã\82\8bã\82ªã\83¼ã\83\97ã\83³æ¸\88ã\81¿ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\82\92è¿\94ã\81\99ã\80\82
引数 \fItemplate\fP で指示する文字列の後ろの 6 文字は XXXXXX である必要がある。
この部分がファイル名を他と重ならないようにする文字で置き換えられる。 \fItemplate\fP は書き換えられるため、文字列定数ではなく文字配列として
宣言するようにしなければならない。
-ファイルは許可モード 0600 で作成され、所有者のみが読み書き可能である。返されるファイルディスクリプタで、このファイルへの読み書き両方のアクセスが
+ã\83\95ã\82¡ã\82¤ã\83«ã\81¯è¨±å\8f¯ã\83¢ã\83¼ã\83\89 0600 ã\81§ä½\9cæ\88\90ã\81\95ã\82\8cã\80\81æ\89\80æ\9c\89è\80\85ã\81®ã\81¿ã\81\8cèªã\81¿æ\9b¸ã\81\8då\8f¯è\83½ã\81§ã\81\82ã\82\8bã\80\82è¿\94ã\81\95ã\82\8cã\82\8bã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81§ã\80\81ã\81\93ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\81¸ã\81®èªã\81¿æ\9b¸ã\81\8d両æ\96¹ã\81®ã\82¢ã\82¯ã\82»ã\82¹ã\81\8c
可能である。 呼び出し者がそのファイルを作成するプロセスであることを保証するために、 ファイルは \fBopen\fP(2) の \fBO_EXCL\fP
フラグ付きでオープンされる。
-\fBmkostemp\fP() 関数は \fBmkstemp\fP() と同様だが、\fBopen\fP(2) に渡される
-フラグ O_APPEND\fB,\fP \fBO_SYNC\fP など) を \fIflags\fP で指定できる点が異なる
+.\" Reportedly, FreeBSD
+\fBmkostemp\fP() 関数は \fBmkstemp\fP() と同様だが、 \fIflags\fP に \fBO_APPEND\fP, \fBO_CLOEXEC\fP,
+\fBO_SYNC\fP のビットを指定できる点が異なる (意味は \fBopen\fP(2) と同じである)。ファイルを作成する際、 \fBmkostemp\fP()
+は \fBopen\fP(2) に渡す \fIflags\fP 引き数に \fBO_RDWR\fP, \fBO_CREAT\fP, \fBO_EXCL\fP を含める。そのため、
+\fBmkostemp\fP() に渡す \fIflags\fP 引き数にこれらの値を含める必要はなく、システムによってはエラーが発生する点に注意すること。
\fBmkstemps\fP() 関数は \fBmkstemp\fP() と同様だが、 \fItemplate\fP 内の文字列に長さ
が \fIsuffixlen\fP 文字の接尾辞 (suffix) が含まれる点が異なる。
\fBmkostemps\fP() と \fBmkstemps\fP() の関係は、
\fBmkostemp\fP() と \fBmkstemp\fP() の関係と同じである。
.SH 返り値
-成功すると、これらの関数は一時ファイルのファイルディスクリプタを返す。 エラーの場合は、\-1 を返し、 \fIerrno\fP を適切に設定する。
+æ\88\90å\8a\9fã\81\99ã\82\8bã\81¨ã\80\81ã\81\93ã\82\8cã\82\89ã\81®é\96¢æ\95°ã\81¯ä¸\80æ\99\82ã\83\95ã\82¡ã\82¤ã\83«ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\82\92è¿\94ã\81\99ã\80\82 ã\82¨ã\83©ã\83¼ã\81®å ´å\90\88ã\81¯ã\80\81\-1 ã\82\92è¿\94ã\81\97ã\80\81 \fIerrno\fP ã\82\92é\81©å\88\87ã\81«è¨å®\9aã\81\99ã\82\8bã\80\82
.SH エラー
.TP
\fBEEXIST\fP
.SH バージョン
\fBmkostemp\fP() は glibc 2.7 以降で利用できる。
\fBmkstemps\fP() と \fBmkostemps\fP() は glibc 2.11 以降で利用できる。
+.SH 属性
+.SS "マルチスレッディング (pthreads(7) 参照)"
+関数 \fBmkstemp\fP(), \fBmkostemp\fP(), \fBmkstemps\fP(), \fBmkostemps\fP() はスレッドセーフである。
.SH 準拠
\fBmkstemp\fP(): 4.3BSD, POSIX.1\-2001.
\fBmkostemp\fP() と \fBmkostemps\fP(): glibc による拡張。
.SH 注意
-glibc バージョン 2.06 以前では、ファイルは許可モード 0666 で作成され、全てのユーザが読み書き可能であった。この古い動作は、
+glibc ã\83\90ã\83¼ã\82¸ã\83§ã\83³ 2.06 以å\89\8dã\81§ã\81¯ã\80\81ã\83\95ã\82¡ã\82¤ã\83«ã\81¯è¨±å\8f¯ã\83¢ã\83¼ã\83\89 0666 ã\81§ä½\9cæ\88\90ã\81\95ã\82\8cã\80\81å\85¨ã\81¦ã\81®ã\83¦ã\83¼ã\82¶ã\83¼ã\81\8cèªã\81¿æ\9b¸ã\81\8då\8f¯è\83½ã\81§ã\81\82ã\81£ã\81\9fã\80\82ã\81\93ã\81®å\8f¤ã\81\84å\8b\95ä½\9cã\81¯ã\80\81
セキュリティ上のリスクになり得る。特に、他の UNIX では許可モードとして 0600
を使うため、プログラムを移植する際、この細かな違いを見落とす可能性があるからだ。 POSIX.1\-2008 では、ファイルを許可モード 0600
で作成することが必須要件として追加された。
+.\"
+.\" The prototype for
+.\" .BR mktemp ()
+.\" is in
+.\" .I <unistd.h>
+.\" for libc4, libc5, glibc1; glibc2 follows POSIX.1 and has the prototype in
+.\" .IR <stdlib.h> .
より一般的には、 \fBmkstemp\fP() の POSIX 規定ではファイルモードについて何も述べていない。 従って、アプリケーションは
\fBmkstemp\fP() (や \fBmkostemp\fP()) を呼び出す前にファイルモード生成マスク (\fBumask\fP(2) 参照)
が適切に設定されているか確認するべきである。
-
-\fBmktemp\fP() のプロトタイプ宣言は、libc4, libc5, glibc1 では \fI<unistd.h>\fP に含まれる;
-glibc2 では POSIX.1 に準拠し \fI<stdlib.h>\fP に含まれている。
.SH 関連項目
\fBmkdtemp\fP(3), \fBmktemp\fP(3), \fBtempnam\fP(3), \fBtmpfile\fP(3), \fBtmpnam\fP(3)
.SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.54 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部
である。プロジェクトの説明とバグ報告に関する情報は
http://www.kernel.org/doc/man\-pages/ に書かれている。