如何在Linux平台上使用C++编写临时文件?
问题描述:
在C++中,如何在Linux上编写一个函数来返回一个临时文件名,然后我可以写入该文件?如何在Linux平台上使用C++编写临时文件?
文件名应尽可能唯一,以便使用相同功能的另一个进程不会得到相同的名称。
答
使用标准库“mktemp”函数之一:mktemp/mkstemp/mkstemps/mkdtemp。
编辑:普通mktemp可能不安全 - mkstemp是首选。
答
你应该简单地检查你正在尝试写入的文件是否已经存在。 这是一个锁定问题。 文件也有所有者,所以如果你正确地做了这件事,错误的过程将无法写入它。
答
人TMPFILE
的TMPFILE()函数打开二进制 读取/写入一个唯一的临时文件(W + B)模式。该文件将被自动当 被关闭或删除程序terminates.ote
答
使用tmpnam(),或任何给你的名字将是脆弱的竞争条件。使用的东西为此目的设计的,它返回一个句柄,如TMPFILE():
#include <stdio.h>
FILE *tmpfile(void);
答
mktemp的应该工作或者获得足够的可用库之一生成UUID。
答
的GNU libc的手册讨论了各种可用选项及其注意事项:
http://www.gnu.org/s/libc/manual/html_node/Temporary-Files.html
长话短说,只有mkstemp()或TMPFILE()应使用,正如其他人提及。
这些返回一个已经打开的FILE句柄,它不与C++的IO流混合。例如,如果你需要使用std :: wofstream来写入这个新文件呢? – Andrey 2012-01-20 01:38:36