欢迎关注Hadoop、Spark、Flink、Hive、Hbase、Flume等大数据资料分享微信公共账号:iteblog_hadoop
  1. 文章总数:975
  2. 浏览总数:11,908,000
  3. 评论:3928
  4. 分类目录:105 个
  5. 注册用户数:6083
  6. 最后更新:2018年12月9日
过往记忆博客公众号iteblog_hadoop
欢迎关注微信公众号:
iteblog_hadoop
大数据技术博客公众号bigdata_ai
大数据猿:
bigdata_ai

Linux下创建临时文件

临时文件是一个暂时用来存储数据的文件。如果使用建立普通文件的方法来创建文件,则可能遇到文件是否存在,是否有文件读写权限的问题。Linux系统下提供的建立唯一的临时文件的方法如下:

#include<stdio.h>
char *tmpnam(char *s);
FILE *tmpfile();

函数tmpnam()产生一个唯一i的文件名。如果参量为NULL,则在一个内部使用的缓冲区内产生文件名,当下一次调用该函数的时候,则可能覆盖该文件名。如果参数不是为NULL,则名字拷贝到字符串中,字符串的长度至少为L_tmpnam,它定义在stdio.h中。如果不成功则函数返回NULL。函数tmpfile()则返回一个临时文件的描述符,文件的打开属性是读和写。相当于使用fopen以w+打开。如果不成功则返回NULL。
下面是一个简短的列子。

#include<stdio.h>
int main(){
	char tmpname[L_tmpnam];
	char *filename;
	FILE *fp;
	
	filename = tmpname(tmpname);
	printf("Temporary file name is %s\n", filename);
	
	fp = tmpfile();
	if(fp){
		printf("Temporary file opened!\n");
	}else{
		perror("tmpfile");
	}
	return 0;
 }

此外,还有两个函数也可以创建临时文件:

#include<stdio.h>
char *mktemp(char *template);
int mkstemp(char *template);

函数mktemp()从给定的模块template中创建唯一的临时文件名。模版可以是文件路径的前缀,模版的最后6个字符必须是“XXXXXX”,比如:

char template[L_tmpnam];
char *filename;

strcpy(template, "/temp/wypXXXXXX");
filename = mktemp(template);
printf("Temporary file name is %s\n", filename);

函数mkstemp()类似于tmpfile(),但是打开的文件相当于使用提供底层的文件操作函数open()打开文件。

本博客文章除特别声明,全部都是原创!
转载本文请加上:转载自过往记忆(https://www.iteblog.com/)
本文链接: 【Linux下创建临时文件】(https://www.iteblog.com/archives/172.html)
喜欢 (0)
分享 (0)
发表我的评论
取消评论

表情
本博客评论系统带有自动识别垃圾评论功能,请写一些有意义的评论,谢谢!