2008-10-01 64 views

回答

17

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

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

+2

这些返回一个已经打开的FILE句柄,它不与C++的IO流混合。例如,如果你需要使用std :: wofstream来写入这个新文件呢? – Andrey 2012-01-20 01:38:36

-2

你应该简单地检查你正在尝试写入的文件是否已经存在。 这是一个锁定问题。 文件也有所有者,所以如果你正确地做了这件事,错误的过程将无法写入它。

0

人TMPFILE

的TMPFILE()函数打开二进制 读取/写入一个唯一的临时文件(W + B)模式。该文件将被自动当 被关闭或删除程序terminates.ote

6

使用tmpnam(),或任何给你的名字将是脆弱的竞争条件。使用的东西为此目的设计的,它返回一个句柄,如TMPFILE():

#include <stdio.h> 

    FILE *tmpfile(void); 
0

mktemp的应该工作或者获得足够的可用库之一生成UUID。

0

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

+0

请勿使用tmpnam()。从手册页: “不要使用此函数,而应使用mkstemp(3)或tmpfile(3)”。 – twk 2008-10-01 22:18:53

相关问题