この関数の目的
tmpfile()は、一時ファイル(temporary file)を自動生成する。
定義
#include <stdio.h> FILE *tmpfile(void);
働き
この関数は、プログラム終了時に自動的に削除される一時的なバイナリファイルを作る。
プログラムが異常終了した場合一時ファイルが削除されるかは処理系定義である。
ファイルは更新モード("wb+"
)で開かれる(fopen()参照)。
返り値は、作られたファイルへのストリームへのポインタである。ファイルを作成できない場合、ヌルポインタを返す。
解説
tmpfile()は、一時的なファイルを自動で作ってくれるので、場合によっては便利な関数である。 この関数の返り値が指すファイルはfclose()する必要はないし、しない方がよい。
作られるファイルはバイナリの更新モードであるから、作業スペースとして自由に扱える。 fseek() も自在である。
作れる一時ファイルの数は、 FOPEN_MAX
に依存する。
が、よほど多くの一時ファイルを作らない限り、上限が問題になることはまずないだろう。
不安定なプログラムで tmpfile() を使うべきではない。 終了する方法が main() から抜けることか exit() を呼び出すことであれば自動削除は有効だが、 abort() の呼び出しや、シグナルによる中断では、プログラムの終了後に一時ファイルが削除されることは保証されない。 一時ファイルの名前が何になるかも、どこに作成されるかも処理系定義なので、どこにゴミとして残るか分からない。 正常に終了する保証がないのであれば自分で決めた名前のファイルを使うほうが安全である。
tmpfile というのは Temporary File の短縮された形で、「一時ファイル」という意味である。