创建临时文件 tmpnam tmpfile tempnam mkstemp unlink
来源:互联网 发布:115年费会员淘宝 2017 编辑:程序博客网 时间:2024/06/13 19:29
推荐使用 tmpfile mkstemp
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>intmain(void){ FILE *pfile,*pfile2; int fileSize, readSize; char * fileBuff = NULL; char buff[128] = { 0 };<strong>/****************(1) tmpfile() *****************/</strong> pfile2= tmpfile(); if(pfile2 == NULL) { fputs("creat temp file error",stderr); exit(1); }if( EOF == fputs("tmpfile function create me !",pfile2)) { fputs("write err.\n",stderr); exit(1); }rewind(pfile2); // positions the stream stream at the beginning of the filefgets(buff,sizeof(buff),pfile2);puts(buff);<strong>/********************(2) tmpnam() + unlink() *****************/</strong>memset(buff,0,sizeof(buff));puts(tmpnam(buff)); /*************read or write file***************/ pfile = fopen(buff, "a+"); unlink(buff); if(pfile == NULL ) { fputs("open error", stderr); exit(1); } if (sizeof("11111111") != fwrite("11111111", sizeof(char), sizeof("11111111") / sizeof(char), pfile)) { fputs("write error", stderr); exit(1); }//get the file size fseek(pfile, 0, SEEK_END); fileSize = ftell(pfile); rewind(pfile); printf("filesize:%d\n", fileSize); fileBuff = (char *) malloc(sizeof(char) * fileSize); if (fileSize != (readSize = fread(fileBuff, sizeof(char), fileSize, pfile))) { fputs("Read error", stderr); exit(3); } else { printf("readContent: %s \nreadsize:%d\n",fileBuff,readSize); } fclose(pfile); free(fileBuff); <strong>/********************(3) fopen() and unlink() **************/</strong> pfile=NULL; pfile=fopen("/tmp/tempA.txt","w+"); if(pfile == NULL ) { fputs("create file failed.",stderr); exit(1); } fputs("fopen create me",pfile); rewind(pfile); if( fgets(buff,sizeof(buff),pfile) == NULL ) { fputs("read file error.\n",stderr); exit(1); } fputs(buff,stdout); fclose(pfile); unlink("/tmp/tempA.txt"); puts("\nDONE.......\n"); return EXIT_SUCCESS;}
int mkstemp(char *template);
mkstemp函数在系统中以唯一的文件名创建一个文件并打开,而且只有当前用户才能访问这个临时文件,并进行读、写操作。
建立唯一临时文件名, template须以数组形式声明而非指针形式.
template格式为: template.XXXXXX. 最后6位必须为XXXXXX, 前缀随意
函数返回一个文件描述符,如果执行失败返回-1。
在glibc 2.0.6 以及更早的glibc库中这个文件的访问权限是0666,glibc 2.0.7以后的库这个文件的访问权限是0600。
由于mkstemp函数创建的临时文件不能自动删除,所以执行完mkstemp函数后要调用unlink函数,unlink函数删除文件的目录入口,但临时文件还可以通过文件描述符进行访问,直到最后一个打开的进程关闭文件操作符,或者程序退出后临时文件被自动彻底地删除。
下面是一个使用mkstemp的例子:
在glibc 2.0.6 以及更早的glibc库中这个文件的访问权限是0666,glibc 2.0.7以后的库这个文件的访问权限是0600。
由于mkstemp函数创建的临时文件不能自动删除,所以执行完mkstemp函数后要调用unlink函数,unlink函数删除文件的目录入口,但临时文件还可以通过文件描述符进行访问,直到最后一个打开的进程关闭文件操作符,或者程序退出后临时文件被自动彻底地删除。
下面是一个使用mkstemp的例子:
int main(void){int fd;char temp_file[]="tmp_XXXXXX";/*Creat a temp file.*/if((fd=mkstemp(temp_file))==-1){printf("Creat temp file faile./n");exit(1);}/*Unlink the temp file.*/unlink(temp_file);close(fd);}
- 创建临时文件 tmpnam tmpfile tempnam mkstemp unlink
- 创建临时文件 tmpnam tmpfile tempnam mkstemp unlink
- 创建临时文件 tmpnam tmpfile tempnam mkstemp unlink
- 创建临时文件——tmpnam,tmpfile,mktemp,mkstemp
- tmpfile创建临时文件
- php中创建文件函数tempnam()与tmpfile()区别
- c下创建临时文件mkstemp函数
- c下创建临时文件mkstemp函数
- c下创建临时文件mkstemp函数
- AUP----mkstemp和tmpfile
- tempnam函数和tmpfile函数
- 通过unlink创建安全的临时文件
- Linux中临时文件创建函数mkstemp的用法
- Linux中临时文件创建函数mkstemp的用法
- PHP 使用tempnam保存临时文件,而不是自己维护临时文件的创建和删除
- 通过先unlink()后close()创建安全的临时文件
- LINUX下建立临时文件: mkstemp
- 利用mkstemp创建程序退出后不会被删除的临时文件
- javascript 判断浏览器 和 得到浏览器的宽度、高度
- static_cast用法
- linux shell script位置参数($0,$1,$2,$3,$4,$5,$6,$7,$8,$9,$#,$*,$?,$!,$$)
- 如何降低数字信号和模拟信号间的相互干扰
- Objective-C中的SEL
- 创建临时文件 tmpnam tmpfile tempnam mkstemp unlink
- RMAN 系列(一)---- RMAN 体系结构概述
- 如何在Linux下添加自己的驱动
- 将虚拟机的版本改为1.6的方法
- ubuntu系统登陆后,只显示桌面,无任何图标
- jasperreport一些问题
- 查找关于 开放式提问和封闭式提问 的资料。
- RMAN 系列(二) ---- RMAN 设置和配置
- mybatis总结