Linux下临时文件的创建、使用与清理

发布时间:2016-12-10 18:46:00 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"Linux下临时文件的创建、使用与清理",主要涉及到Linux下临时文件的创建、使用与清理方面的内容,对于Linux下临时文件的创建、使用与清理感兴趣的同学可以参考一下。

Linux编程时常用到临时文件需要写入临时数据,当程序运行结束时再把临时文件删除。我们知道linux有个/tmp目录是专门用来存放临时文件的。它提供了几种创建临时文件的方法,下面对这些方法进行一下总结。 总的来说,使用临时文件的方法分两种。一种是函数只返回可用的临时文件名,需要手动打开、关闭和删除;另一种是直接返回了文件结构指针,当程序退出时自动删除。 第一种方法的函数有: char *tmpnam(char *s);   char *mktemp(char *template);   第二种方法的函数有: FILE *tmpfile();   int mkstemp(char *template);   下面做详细讲解 // char *tmpnam(char *s);   #include<stdio.h> int main(){ char tmpname[L_tmpnam]; //L_tmpnam是stdio.h中定义的已有变量 char *filename; // filename = tmpnam(tmpname); filename = tmpnam(NULL); printf("temp filename: %s\t%s\n", filename, tmpname); return 0; } 执行结果如下: temp filename: /tmp/filePLCrI3 /tmp/filePLCrI3 tmpname函数返回一个系统临时文件目录中的可用文件名,如果它的参数不为空,则将该文件名复制到参数指向的数组中。从上面这个例子可以看出,其实不管用不用参数,filename都可以返回可用的文件名。如果函数调用不成功,则返回NULL。 通过tmpnam创建的临时文件会在程序退出时自动删除临时文件。 需要注意的是如果参数为NULL,则程序使用内部缓冲区生成文件名。如果两个程序生成的文件名一致,就会出现临时文件被覆盖的情况。当然是在机率很小的情况下。 // char *mktemp(char *template);   #include "stdio.h" #include "unistd.h" #include "stdlib.h" int main() { FILE *fp; char template[] ="/tmp/mytmpXXXXXX"; char *filename; filename = mktemp(template); printf("temp file name %s\n", filename); fp = freopen(filename, "w", stdout); if(fp == NULL) printf("打开失败"); unlink(filename); printf("test string\n"); return 0; } mktemp函数可以从一个模板中生成临时文件名,但要求模板字符串的最后6位必须是XXXXXX用以生成随机字符串。 生成文件名之后就可以用fopen函数打开了,打开成功最好调用一下unlink函数,从而实现在程序退出时该临时文件会自动删除。 这两个函数的好处在于可以显式地获得文件名,这在输出重定向等情况下是比较有用的。 // FILE *tmpfile();   FILE *fp = tmpfile(); if(fp == NULL) printf("文件创建失败\n"); tmpfile函数直接创建一个可用的临时文件,程序中可以一直使用fp这个文件描述符,当程序结束时临时文件自动删除。 // int mkstemp(char *template);   #include "stdio.h" int main() { char template[]="/tmp/mytmpXXXXXX"; int fd=mkstemp(template); unlink(template); printf("temp filename:%s\n",template); return 0; } mkstemp文件可以通过模板创建临时文件,返回结果是直接打开的文件描述符,可以用read/write操作。 使用该函数同样需要使用unlink实现程序退出后自动删除临时文件。

上一篇:算法
下一篇:MongoDB介绍及下载与安装

相关文章

相关评论