仓酷云
标题:
给大家带来CentOS下对一时文件的操纵之mkstemp
[打印本页]
作者:
因胸联盟
时间:
2015-1-14 20:43
标题:
给大家带来CentOS下对一时文件的操纵之mkstemp
欢迎大家来到仓酷云论坛!
利用一时文件要思索几个成绩:
包管一时文件间的文件名不合作抵触。
包管一时文件中内容不被其他用户大概黑客偷看、删除和修正。
Linux中供应了mkstemp和tmpfile函数来处置一时文件。
mkstemp函数
intmkstemp(char*template);
mkstemp函数在体系中以独一的文件名创立一个文件并翻开,并且只要以后用户才干会见这个一时文件,并举行读、写操纵。mkstemp函数只要一个参数,这个参数是个以“XXXXXX”开头的非空字符串。mkstemp函数会用随机发生的字符串交换“XXXXXX”,包管了文件名的独一性。函数前往一个文件形貌符,假如实行失利前往-1。在glibc2.0.6和更早的glibc库中这个文件的会见权限是0666,glibc2.0.7今后的库这个文件的会见权限是0600。
一时文件利用完成后应实时删除,不然一时文件目次会塞满渣滓。因为mkstemp函数创立的一时文件不克不及主动删除,以是实行完mkstemp函数后要挪用unlink函数,unlink函数删除文件的目次出口,但一时文件还能够经由过程文件形貌符举行会见,直到最初一个翻开的历程封闭文件操纵符,大概步伐加入后一时文件被主动完全地删除。
[cpp]
viewplaincopy
登录/注册后可看大图
CODE_ico.png
(1.18 KB, 下载次数: 7)
下载附件
保存到相册
给大家带来CentOS下对一时文件的操纵之mkstemp
2015-1-14 20:43 上传
<spanstyle=
"font-size:18px;"
>#include<stdio.h>
#include<string.h>
#include<unistd.h>
#include<stdlib.h>
int
write_temp_file(
char
*buffer,
size_t
length){
int
len=length;
char
filename_template[]=
"/tmp/temp_file.XXXXXX"
;
int
fd=mkstemp(filename_template);
unlink(filename_template);
//Unlinkthefile,soitllberemovedwhenclose
printf(
"Templatefilename:%s
"
,filename_template);
write(fd,&len,
sizeof
(len));
write(fd,buffer,len);
return
fd;
}
char
*read_temp_file(
int
fd,
size_t
*length){
char
*buffer;
lseek(fd,0,SEEK_SET);
read(fd,length,
sizeof
(
size_t
));
buffer=(
char
*)malloc(*length);
read(fd,buffer,*length);
close(fd);
//Tempfilewillbedeleted
return
buffer;
}
int
main(
int
argc,
char
**argv){
char
buffer[]=
"Testtemplatefiles"
;
int
fd=write_temp_file(buffer,strlen(buffer));
int
len=0;
char
*result=read_temp_file(fd,&len);
printf(
"Len:%d
Content:%s
"
,len,result);
free(result);
return
0;
}</span>
tmpfile函数
假如您利用ClibraryI/O函数,而且并没有另外一个步伐利用这个一时文件,有个更简便的函数——tmpfile。tmpfile函数创立并翻开一个一时文件,而且主动实行了unlink。tmpfile函数前往一个文件形貌符,假如实行失利前往NULL。当步伐实行了fclose大概加入时,资本被开释。
别的,linux体系中还供应mktemp、tmpnam、和tempnam等函数,可是因为强健性和宁静性的成绩,不倡议利用。
欢迎大家来到仓酷云论坛!
作者:
admin
时间:
2015-1-16 17:54
标题:
给大家带来CentOS下对一时文件的操纵之mkstemp
对于英语不是很好的读者红旗Linux、中标Linux这些中文版本比较适合。现在一些Linux网站有一些Linux版本的免费下载,这里要说的是并不适合Linux初学者。
作者:
金色的骷髅
时间:
2015-1-18 21:12
Linux简单,占内存少,特别是对于程序开发人员来说很方便,如果说windows的成功在于其方便用户的窗口管理界面。
作者:
第二个灵魂
时间:
2015-1-27 21:19
随着Linux应用的扩展,出现了不少Linux社区。有一些非常优秀的社区往往是Linux高手的舞台,如果在探讨高级技巧的论坛张贴非常初级的问题经常会没有结果。
作者:
若天明
时间:
2015-2-5 15:35
以前觉得Linux就跟dos一样,全是用命令窗口,相对于窗口界面来说多麻烦呀。
作者:
透明
时间:
2015-3-3 10:52
首先Linux是开源的,这也是最主要的原因,想学windows,Unix,对不起我们没源代码。也正是因为这样,Linux才能够像滚雪球一样越滚越大,发展到现在这种规模。
作者:
飘飘悠悠
时间:
2015-3-11 10:50
这也正是有别的OS得以存在的原因,每个系统都有其自身的优点。?
作者:
小妖女
时间:
2015-3-18 13:29
和私有操作系统不同,各个Linux的发行版本的技术支持时间都较短,这对于Linux初学者是往往不够的。
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2