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

J M*_*ler 11 c++ linux temporary-files

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

文件名应尽可能唯一,以便使用相同函数的另一个进程不会获得相同的名称.

And*_*ico 18

使用标准库"mktemp"函数之一:mktemp/mkstemp/mkstemps/mkdtemp.

编辑:普通mktemp可能不安全 - mkstemp是首选.

  • 这些返回一个已经打开的FILE句柄,它不会与C++的IO流混合.例如,如果您需要使用std :: wofstream来写入这个新文件,该怎么办? (2认同)

twk*_*twk 7

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

   #include <stdio.h>

   FILE *tmpfile(void);
Run Code Online (Sandbox Code Playgroud)