doc/ja_JP.eucJP/man/man3/mktemp.3
Jun Kuriyama fc733ebccd Japanese version of section 3 manual pages based on 3.1-RELEASE.
This section is based on catpages contributed by Mainichi
Communications, Inc.

Translated by:	MYCOM team
Converted by:	Japanese Online Manual Project <man-jp@jp.FreeBSD.ORG>
Submitted by:	Kazuo Horikawa <k-horik@yk.rim.or.jp>
1999-12-09 16:26:08 +00:00

174 lines
4.7 KiB
Groff

.\" Copyright (c) 1989, 1991, 1993
.\" The Regents of the University of California. All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed by the University of
.\" California, Berkeley and its contributors.
.\" 4. Neither the name of the University nor the names of its contributors
.\" may be used to endorse or promote products derived from this software
.\" without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" @(#)mktemp.3 8.1 (Berkeley) 6/4/93
.\"
.Dd February 11, 1998
.Dt MKTEMP 3
.Os
.Sh 名称
.Nm mktemp
.Nd 一意な一時ファイル名を作成
.Sh 書式
.Fd #include <unistd.h>
.Ft char *
.Fn mktemp "char *template"
.Ft int
.Fn mkstemp "char *template"
.Ft char *
.Fn mkdtemp "char *template"
.Sh 解説
.Fn mktemp
関数は、特定ファイル名テンプレートの一部を書き換えて
ファイル名を作成します。このファイル名は一意的で、
アプリケーションでの使用に
適合しています。テンプレートとしては、
/tmp/temp.XXXX
のように、任意の
ファイル名に数桁の文字
.Ql X
が付いているものが使用されます。最後の
.Ql X
は、
現在のプロセス番号か固有な文字、またはその両方の組み合わせで置き
換えられます。
.Fn mktemp
が戻す一意的なファイル名の数は、
.Ql X
の数によって決まります。
.Ql X
が6 桁である場合、
.Fn mktemp
は約
26 ** 6
とおりのファイル名を作成できます。
.Pp
.Fn mkstemp
関数は、テンプレートを同じように置き換えて
テンプレートファイル、モード 0600 を作成し、読み書き用としてオープンした
ファイル記述子を返します。これにより、ファイルの存在を確認することと
使用するためにオープンすることとの間の競合状況を避けられます。
.Fn mkdtemp
関数は、テンプレートを
.Xr mktemp 3
と同じように置き換え、
テンプレートディレクトリ、モード 0700 を作成します。
.Sh 戻り値
.Fn mktemp
関数と
.Fn mkdtemp
関数は、問題がない場合はテンプレートのポインタを戻し、問題がある場合は
.Dv NULL
を戻します。
.Fn mkstemp
関数は、適切なファイルを作成できない場合に \-1 を戻します。
どの呼出しでもエラーが発生すると、エラーコードがグローバル変数
.Va errno
に書き込まれます。
.Sh エラー
.Fn mkstemp
関数と
.Fn mkdtemp
関数は、以下の 1 つの値に
.Va errno
を設定します。
.Bl -tag -width [ENOTDIR]
.It Bq Er ENOTDIR
テンプレートのパス名部分が、存在するディレクトリではない。
.El
.Pp
.Fn mkstemp
関数と
.Fn mkdtemp
関数は、
.Xr stat 2
関数で規定されるどの値も
.Va errno
に設定する可能性があります。
.Pp
.Fn mkstemp
関数は、
.Xr open 2
関数で規定されるどの値も
.Va errno
に設定する可能性があります。
.Pp
.Fn mkdtemp
関数は、
.Xr mkdir 2
関数で規定されるどの値も
.Va errno
に設定する可能性があります。
.Sh
コアダンプに終わる問題として普通なものは、プログラマが、
.Fn mktemp ,
.Fn mkstemp ,
.Fn mkdtemp
に読込み専用ストリングを渡しているために発生します。
この問題は、
.St -ansiC
コンパイラが普及する前に
開発されたプログラムで多く見られます。たとえば
引数
.Qq /tmp/tempfile.XXXXXX
を指定して
.Fn mkstemp
を呼び出すと、
.Fn mkstemp
が、指定されたストリング定数を修正しようとするので、コアダンプが
起こります。問題を起こすプログラムが、このような関数呼出しを頻繁に
行なっている場合は、メモリの書込み可能セグメントへストリング定数を
保存するようにプログラムをコンパイルすることもできます。詳細については、
.Xr gcc 1
を参照してください。
.Sh バグ
システム攻撃者は、
.Fn mktemp
が作成したファイル名を推測できます。できるかぎり
.Fn mkstemp
を使用してください。
.Pp
.Sh 関連項目
.Xr chmod 2 ,
.Xr getpid 2 ,
.Xr mkdir 2 ,
.Xr open 2 ,
.Xr stat 2
.Sh 歴史
.Fn mktemp
関数は、
.At v7
に追加されました。
.Fn mkdtemp
関数は、
.Ox 2.2
に追加されました。
.\"kuma 1999-11-10