linux临时文件

来源:互联网 发布:交换机端口安全配置 编辑:程序博客网 时间:2024/06/06 00:09

很多情况下,程序会利用一些文件形式的临时存储手段。

用tmpname函数可以生成一个唯一的文件名。

#include<stdio.h>

char *tmpname( char  *s)

tmpname函数返回一个不与任何已存在的文件名同名的有效文件名,如果字符串s不为空,文件名也会写入它。对tmpname的后续调用

会覆盖存放返回值的静态存储区。

如果需要立刻使用临时文件,你可以用tmpfile函数在给它命名的同时打开它,这点非常的重要。因为另一个程序可能会创建去一个与tmpname返回的

文件名同名的文件,tmpfile()则完全避免了这种情况。

#include<stdio.h>

FILE *tmpfile(void);

tmpfile()返回一个文件流指针,它指向一个唯一的临时文件。该文件以读写的方式打开,当对一个文件的所有的引用都被删除的时候,这个临时文件将会

被删除。

如果出错,tmpfile函数返回空指针,并设置errno的值。

#include <stdio.h>#include <stdlib.h>int main(){    char tmpname[L_tmpnam];    char *filename;     FILE *tmpfp;    filename = tmpnam(tmpname);    printf("Temporary file name is: %s\n", filename);    tmpfp = tmpfile();    if(tmpfp)        printf("Opened a temporary file OK\n");    else        perror("tmpfile");    exit(0);}

UNIX有另外一种生成临时文件名的方式,就是使用mktemp和mktemp函数。

#include<stdlib.h>

char *mktemp(char *template);

int mkstemp(char *template);

mktemp函数以给定的模板为基础创建一个唯一的文件名,template参数必须是一个以6个X字符结尾的字符串。

mkstemp函数类似于tempfile(),它也是同时创建并打开一个临时文件。文件名的生成方法和mktemp一样,但是它的返回值是一个

打开的,底层的文件描述符。



在应该在程序中使用"创建并打开"函数tmpfile和mkstemp函数,而不要用tmpname和mktemp函数。