Next: , Previous: File Name Expansion, Up: File Names


24.8.5 一意なファイル名の生成

一時的なファイルに書く必要があるプログラムもあります。 そのようなファイル向けの名前を作る通常の方法はつぎのとおりです。

     (make-temp-name
      (expand-file-name name-of-application
                        temporary-file-directory))

make-temp-nameの仕事は、 異なる2人のユーザーや異なる2つのジョブがまったく同じファイル名を 使わないようにすることです。 この例では、変数temporary-file-directoryを使って 一時的なファイルを置く場所を決めています。 すべてのEmacs Lispプログラムでは、 すべての一時的なファイル向けのディレクトリを指定する 一意な方法をユーザーに提供するために、 この目的にはtemporary-file-directoryを使うべきです。

— Function: make-temp-name string

この関数は、一意なファイル名として使える文字列を生成する。 名前はstringで始まり、各Emacsジョブごとに異なる数を含む。

          (make-temp-name "/tmp/foo")
               ⇒ "/tmp/foo232J6v"

同じEmacsで動作している異なるライブラリのあいだで衝突しないように、 make-temp-nameを使う各Lispプログラムでは、 独自のstringを使うべきである。 stringの末尾に付加される数は、 異なるEmacsジョブで動いている同じアプリケーションを区別する。 文字を余計に追加することで、1つのEmacsジョブであっても 異なる名前の個数を非常に多くできる。

— Variable: temporary-file-directory

この変数は、一時的なファイルを作成するためのディレクトリ名を指定する。 その値はディレクトリ名(see Directory Names)であるべきだが、 Lispプログラムにとっては、 その値がディレクトリのファイルとしての名前であっても処理できるほうがよい。 この値をexpand-file-nameの第2引数に使うと、 そのようにできる。

デフォルト値は、読者のオペレーティングシステムにおいて 合理的な方法で決定される。 GNUとUNIXシステムでは、環境変数TMPTMPDIRを基にする。

読者が一時的なファイル名を選ぶためにmake-temp-nameを 使わない場合であっても、 一時的なファイル名を置くディレクトリを決めるために この変数を使うべきである。