C++程序 创建临时文件
在C++程序中,有时需要在运行时临时创建一些文件去存储中间数据,或者提供给其他模块进行处理。这篇文章将会介绍如何在C++程序中创建临时文件。
使用tmpnam函数创建临时文件
首先,我们介绍一个C++语言提供的函数 tmpnam()
可以用来创建临时文件。此函数接收一个字符数组指针作为参数,用于存储临时文件名。
下面是使用 tmpnam()
函数创建临时文件的示例代码:
#include <stdio.h>
int main() {
char buffer[L_tmpnam];
tmpnam(buffer);
printf("临时文件名是: %s\n", buffer);
return 0;
}
输出:
临时文件名是: C:\Users\USER\AppData\Local\Temp\filekTcVl6
这个函数的缺点是不够安全,因为它会返回已经存在的文件名,所以最好是使用下面介绍的函数。
使用mkstemp函数创建临时文件
mkstemp()
函数用于创建一个唯一的临时文件,并返回该文件的文件描述符。
下面是使用 mkstemp()
函数创建临时文件的示例代码:
#include <iostream>
#include <cerrno>
#include <cstring>
#include <fcntl.h>
#include <unistd.h>
int main() {
int fd;
char filename[] = "/tmp/XXXXXX"; //创建一个模板字符串
mode_t mode = S_IRWXU | S_IRWXG;
fd = mkstemp(filename); //生成临时文件名并创建文件
if (fd == -1) {
std::cerr << "创建临时文件失败\n"
<< "错误信息:" << std::strerror(errno) << std::endl;
return 1;
}
std::cout << "临时文件名是:" << filename << std::endl;
std::cout << "文件描述符是:" << fd << std::endl;
// 做你需要做的事情
// ...
close(fd); // 关闭文件描述符
unlink(filename); // 删除临时文件
return 0;
}
输出:
临时文件名是: /tmp/gEvpep
文件描述符是: 3
总结
在C++程序中,我们可以使用 tmpnam() 函数或者 mkstemp() 函数来创建临时文件。其中 mkstemp()
函数创建的临时文件是唯一的,并且更加安全,所以我们强烈建议使用这个函数来创建临时文件。