如何在Linux平台上创建用于在C ++中编写的临时文件?

时间:2008-10-01 22:08:09

标签: c++ linux temporary-files

在C ++中,在Linux上,如何编写一个函数来返回一个临时文件名,然后我可以打开它进行编写?

文件名应尽可能唯一,以便使用相同功能的另一个进程不会得到相同的名称。

7 个答案:

答案 0 :(得分:18)

使用标准库“mktemp”函数之一:mktemp / mkstemp / mkstemps / mkdtemp。

编辑:普通的mktemp可能不安全 - 首选mkstemp。

答案 1 :(得分:7)

tmpnam(),或任何给你一个名字的东西都会受到竞争条件的影响。使用为此目的设计的东西返回句柄,例如tmpfile():

   #include <stdio.h>

   FILE *tmpfile(void);

答案 2 :(得分:2)

GNU libc手册讨论了各种可用选项及其注意事项:

http://www.gnu.org/s/libc/manual/html_node/Temporary-Files.html

长话短说,只应使用mkstemp()或tmpfile(),正如其他人所提到的那样。

答案 3 :(得分:0)

man tmpfile

  

tmpfile()函数以二进制形式打开一个唯一的临时文件          读/写(w + b)模式。该文件将被自动删除          已关闭或程序终止。ote

答案 4 :(得分:0)

mktemp应该可以工作,或者获取大量可用库中的一个来生成UUID。

答案 5 :(得分:0)

C标准库中的tmpnam()函数旨在解决此问题。还有tmpfile(),它返回一个打开的文件句柄(并在你关闭它时自动将其删除)。

答案 6 :(得分:-2)

您只需检查您尝试写入的文件是否已存在。 这是一个锁定问题。 文件也有所有者,所以如果你做得对,错误的过程将无法写入。