临时文件是一个暂时用来存储数据的文件。如果使用建立普通文件的方法来创建文件,则可能遇到文件是否存在,是否有文件读写权限的问题,而创建的时候希望一次创建成功,不会覆盖可能重名的文件
tmpfile - create a temporary file in a safe manner
tempnam - create a name for a temporary file
tmpnam - create a name for a temporary file
mkdtemp - create a unique temporary directory
mkstemp - create a unique temporary file
mktemp - make a unique temporary filename
char *tmpnam(char *s);
名字保存在数组 char buf[L_tmpnam]里,长度至少L_tmpnam
FILE *tmpfile(void);
以wb+形式创建一个临时二进制文件,关闭文件或程序结束时将自动删除
char *mktemp(char *template);
参数template所指的文件名称字符串中最后六个字符必须是XXXXXX。产生后的文件名会借字符串指针返回
int mkstemp(char *template);
临时文件使用完成后应及时删除,否则临时文件目录会塞满垃圾。由于mkstemp函数创建的临时文件不能自动删除,所以执行完 mkstemp函数后要调用unlink函数
举例
char tmp[L_tmpnam] = "/tmp/tmp.XXXXXX";
int fd = mkstemp(tmp); //原始mktemp
printf("tmp file is %s\n", tmp);
unlink(tmp);
# ./a.out
tmp file is /tmp/tmp.3h1QG1
注意:如果我们打算用它,就必须尽快打开这个文件,把另一个程序打开一个同名文件的风险降到最小