日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
MKTEMP(3) FreeBSD ライブラリ関数マニュアル MKTEMP(3) 名称 mktemp -- (ユニークな) 一時ファイル名を作成する ライブラリ 標準 C ライブラリ (libc, -lc) 書式 #include <stdlib.h> char * mktemp(char *template); int mkstemp(char *template); int mkostemp(char *template, int oflags); int mkostemps(char *template, int suffixlen, int oflags); char * mkdtemp(char *template); #include <unistd.h> int mkstemps(char *template, int suffixlen); 解説 mktemp() 関数は、与えられたファイル名のテンプレートを取り、ファイル名を作 成するためにその一部分を上書きします。このファイル名は、関数の呼び出しの 時に存在しないことが保証され、アプリケーションでの使用に適しています。テ ンプレートは、いくつかの数の `X' を追加した任意のファイル名です、例えば、 /tmp/temp.XXXXXX。後続する `X' は、ユニークな英数字の組み合わせに置き換え られます。mktemp() が返すことができるユニークなファイル名の数は、提供され る `X' の数に依存します。6 つの `X' は、mktemp() が、利用可能な一時ファイ ル名の 56800235584 (62 ** 6) の 1 つを選択する結果となります。 mkstemp() 関数は、テンプレートに同じ置換を行ない、モード 0600 でテンプ レートファイルを作成し、読み込みと書き込みのためにオープンされたファイル 記述子を返します。これは、ファイルの存在をテストすることと、使用のために オープンすることの間の競合を回避します。 mkostemp() 関数は、mkstemp() に似ていますが、追加の open(2) フラグ (<fcntl.h> に定義された) を指定することができます。許可されたフラグは、 O_APPEND, O_DIRECT, O_SHLOCK, O_EXLOCK, O_SYNC と O_CLOEXEC です。 mkstemps() と mkostemps() 関数は、テンプレートに接尾辞が存在できることを 除いて、それぞれ mkstemp() と mkostemp() と同様に動作します。テンプレート は、形式 /tmp/tmpXXXXXXsuffix であるべきです。mkstemps() と mkostemps() 関数は、接尾辞の文字列の長さを伝えます。 mkdtemp() 関数は、mktemp() のようにテンプレートに同じ置換を行ない、モード 0700で、テンプレートのディレクトリを作成します。 戻り値 mktemp() と mkdtemp() 関数は、成功すると、テンプレートへのポインタを返 し、失敗すると、NULL を返します。mkstemp(), mkostemp(), mkstemps() と mkostemps() 関数は、適切なファイルを作成することができないなら、-1 を返し ます。どちらかの呼び出しが失敗するなら、エラーコードがグローバル変数 errno に設定されます。 エラー mkstemp(), mkostemp(), mkstemps(), mkostemps() と mkdtemp() 関数は、次の 値の 1 つを errno に設定します。 [ENOTDIR] テンプレートのパス名の部分が、存在するディレクトリでは ありません。 また、mkostemp() と mkostemps() 関数は、errno に次の値を設定します: [EINVAL] oflags 引数が無効です。 また、mkstemp(), mkostemp(), mkstemps(), mkostemps() と mkdtemp() 関数 は、stat(2) 関数で明記されたあらゆる値に errno を設定するかもしれません。 また、mkstemp(), mkostemp(), mkstemps() と mkostemps() 関数は、open(2) 関 数で明記されたあらゆる値に errno を設定するかもしれません。 mkdtemp() 関数は、mkdir(2) 関数で明記されたあらゆる値に errno を設定する かもしれません。 注 コアダンプの結果となる代表的なプログラムは、プログラマが、mktemp(), mkstemp(), mkstemps() または mkdtemp() に読み込み専用の文字列を渡すことで す。これは、ISO/IEC 9899:1990 (``ISO C90'') コンパイラが普及する前に開発 されたプログラムでよく見られます。例えば、引数 "/tmp/tempfile.XXXXXX" を 付けて mkstemp() を呼び出すことは、与えられた文字列定数を修正しようと試み る mkstemp() のためにコアダンプの結果となります。 また、mkdtemp(), mkstemp() と mktemp() 関数プロトタイプは、<unistd.h> で 利用できます。 関連項目 chmod(2), getpid(2), mkdir(2), open(2), stat(2) 規格 mkstemp() と mkdtemp() 関数は、IEEE Std 1003.1-2008 (``POSIX.1'') に適合 するはずです。mktemp() 関数は、IEEE Std 1003.1-2001 (``POSIX.1'') に適合 するはずで、IEEE Std 1003.1-2008 (``POSIX.1'') では明記されていません。 mkostemp(), mkstemps() と mkostemps() 関数は、どんな規格にも適合しませ ん。 歴史 mktemp() 関数は、Version 7 AT&T UNIX で登場しました。mkstemp() 関数は、 4.4BSD で登場しました。mkdtemp() 関数は、OpenBSD 2.2 ではじめて登場し、そ の後 FreeBSD 3.2 で登場しました。mkstemps() 関数は、OpenBSD 2.4 ではじめ て登場し、その後 FreeBSD 3.4 で登場しました。mkostemp() と mkostemps() 関 数は、FreeBSD 10.0 で登場しました。 バグ この関数ファミリは、推測することができるファイル名を生成しますが、多くの `X' ができるだけ一時的ファイル名の数を増加させるために使用されるとき、危 険は、最小化されます。これは、セキュリティの観点で特に危険な (mktemp() 関 数呼び出し中に) ファイルの存在をテストし、(後でユーザアプリケーションで) 使用するために、それをオープンしている間に mktemp() で競合を起こします。 利用可能なときにはいつでも、競合条件がないので、mkstemp() または mkostemp() が代わりに使用されるべきです。mkstemp() が使用できないなら、 mktemp() によって作成されたファイル名は、open(2) への O_EXCL フラグを使用 して作成されるべきで、呼び出しの返り状態は、失敗していないかテストすべき です。これは、万一、攻撃者がその内容を操作するか、または読み込む意図で既 にファイルを作成した場合に、プログラムが盲目的に継続しないことを保証しま す。 FreeBSD 11.4 August 8, 2013 FreeBSD 11.4