创建临时文件——tmpnam,tmpfile,mktemp,mkstemp
2015-02-07 15:16
591 查看
创建名字唯一的临时文件:推荐使用tmpfile和mkstemp,因为这两个函数创建文件的同时并打开文件,总的来说安全又可靠。tmpfile返回的是文件流指针FILE*,mkstemp返回的是文件描述符。
表头文件 #include <stdio.h>
函数定义 FILE *tmpfile(void);
函数描述 创建唯一的临时文件,并打开文件
返回值 成功返回文件流,失败返回NULL
表头文件 #include <stdio.h>
函数定义 char *tmpnam(char *s);
函数描述 创建唯一的临时文件
返回值 成功返回文件名字指针,失败返回NULL
#include <stdio.h>
#include <stdlib.h>
int main()
{
char tmpname[L_tmpnam];
char *filename;
FILE *tmpfp;
if((filename = tmpnam(tmpname)) != NULL) //方式一:不推荐使用
{
printf("Temporary file name is: %s\n", filename);
printf("Temporary tmpnam is: %s\n", tmpname);//在一次打开中filename 与 tmpnam相同
open(tmpname);
perror("open");
open(filename);
perror("open");
}
tmpfp = tmpfile(); //方式二:推荐使用
if(tmpfp)
printf("Opened a temporary file OK\n");
else
perror("tmpfile");
exit(0);
}
用法与tmpnam差不多,只是名字部分可以由template确定,template后面六个字符必须为X,例如tmpXXXXXX
示例:
#include <stdlib.h>
#include <stdio.h>
//char *mktemp(char *template);
int main(int argc,char *argv[])
{
char filename[] = "temp-XXXXXX";
char *name;
if((name = mktemp(filename)) == NULL)
{
perror("mktemp");
exit(1);
}
printf("name:%s,filename:%s\n",name,filename);
exit(0);
}
表头文件 #include<stdlib.h>
定义函数 int mkstemp(char * template);
函数说明 mkstemp()用来建立唯一的临时文件。参数template 所指的文件名
称字符串中最后六个字符必须是XXXXXX。Mkstemp()会以可读写模式
和0600 权限来打开该文件,如果该文件不存在则会建立该文件。打
开该文件后其文件描述词会返回。文件顺利打开后返回可读写的文件描述词。
若果文件打开失败则返回NULL,并把错误代码存在errno中。
错误代码 EINVAL 参数template 字符串最后六个字符非XXXXXX。EEXIST 无法
建立临时文件。
附加说明 参数template所指的文件名称字符串必须声明为数组,如:
char template[ ] =”template-XXXXXX”;
千万不可以使用下列的表达方式
char *template = “template-XXXXXX”;
与mktemp函数区别:mkstemp返回值为文件描述符,mktemp返回值为文件名指针。
示例:
#include <stdlib.h>
int main(int argc,char *argv[])
{
int fd;
char tmpfile[] = "temp-XXXXXX";
if((fd = mkstemp(tmpfile))< 0)
{
perror("mkstemp");
exit(1);
}
close(fd);
exit(0);
}
http://blog.sina.com.cn/s/blog_63009a040100snyv.html
tmpnam,tmpfile
表头文件 #include <stdio.h>函数定义 FILE *tmpfile(void);
函数描述 创建唯一的临时文件,并打开文件
返回值 成功返回文件流,失败返回NULL
表头文件 #include <stdio.h>
函数定义 char *tmpnam(char *s);
函数描述 创建唯一的临时文件
返回值 成功返回文件名字指针,失败返回NULL
#include <stdio.h>
#include <stdlib.h>
int main()
{
char tmpname[L_tmpnam];
char *filename;
FILE *tmpfp;
if((filename = tmpnam(tmpname)) != NULL) //方式一:不推荐使用
{
printf("Temporary file name is: %s\n", filename);
printf("Temporary tmpnam is: %s\n", tmpname);//在一次打开中filename 与 tmpnam相同
open(tmpname);
perror("open");
open(filename);
perror("open");
}
tmpfp = tmpfile(); //方式二:推荐使用
if(tmpfp)
printf("Opened a temporary file OK\n");
else
perror("tmpfile");
exit(0);
}
mktemp
用法与tmpnam差不多,只是名字部分可以由template确定,template后面六个字符必须为X,例如tmpXXXXXX示例:
#include <stdlib.h>
#include <stdio.h>
//char *mktemp(char *template);
int main(int argc,char *argv[])
{
char filename[] = "temp-XXXXXX";
char *name;
if((name = mktemp(filename)) == NULL)
{
perror("mktemp");
exit(1);
}
printf("name:%s,filename:%s\n",name,filename);
exit(0);
}
mkstemp(建立唯一的临时文件)
相关函数 mktemp表头文件 #include<stdlib.h>
定义函数 int mkstemp(char * template);
函数说明 mkstemp()用来建立唯一的临时文件。参数template 所指的文件名
称字符串中最后六个字符必须是XXXXXX。Mkstemp()会以可读写模式
和0600 权限来打开该文件,如果该文件不存在则会建立该文件。打
开该文件后其文件描述词会返回。文件顺利打开后返回可读写的文件描述词。
若果文件打开失败则返回NULL,并把错误代码存在errno中。
错误代码 EINVAL 参数template 字符串最后六个字符非XXXXXX。EEXIST 无法
建立临时文件。
附加说明 参数template所指的文件名称字符串必须声明为数组,如:
char template[ ] =”template-XXXXXX”;
千万不可以使用下列的表达方式
char *template = “template-XXXXXX”;
与mktemp函数区别:mkstemp返回值为文件描述符,mktemp返回值为文件名指针。
示例:
#include <stdlib.h>
int main(int argc,char *argv[])
{
int fd;
char tmpfile[] = "temp-XXXXXX";
if((fd = mkstemp(tmpfile))< 0)
{
perror("mkstemp");
exit(1);
}
close(fd);
exit(0);
}
http://blog.sina.com.cn/s/blog_63009a040100snyv.html
相关文章推荐
- 创建临时文件 tmpnam tmpfile tempnam mkstemp unlink
- 创建临时文件 tmpnam tmpfile tempnam mkstemp unlink
- 创建临时文件 tmpnam tmpfile tempnam mkstemp unlink
- Linux:使用mktemp创建临时文件/目录
- Linux中临时文件创建函数mkstemp的用法
- mktemp -创建一个临时文件或目录
- Linux中临时文件创建函数mkstemp的用法
- tmpfile创建临时文件
- tmpnam和tmpfile临时文件
- mktemp命令_Linux mktemp 命令用法详解:创建临时文件供shell脚本使用
- 利用mkstemp创建程序退出后不会被删除的临时文件
- shell 创建临时目录和临时文件mktemp
- BC30138: 无法在路径“C:\WINDOWS\TEMP\”中创建临时文件: 拒绝访问
- WORD 或者 Outlook 提示“无法创建工作文件,请检查临时环境变量” 的解决方法
- Word出现"无法创建工作文件,请检查临时环境变量"的解决方法
- 无法创建临时 il 文件;清理临时目录中的旧 il 文件
- 打开Outlook2007时,出现Outlook 无法创建工作文件,请检查临时环境变量。
- 创建和使用临时文件
- shell创建临时文件
- Word 无法创建工作文件 请检查临时环境变量 解决方法