在POSIX中,mkstemp
是创建临时文件的首选方式。
但它打开文件并返回一个int
,即文件描述符。我只能从中创建一个FILE*,而不能在C++中使用我更喜欢的std::ofstream
。(显然,在AIX和其他一些系统上,您可以从文件描述符创建一个std::ofstream
,但当我尝试时,我的编译器会发出警告。)
我知道可以使用tmpnam
获取临时文件名,然后使用它自己打开ofstream
,但由于竞态条件,这似乎不安全,并导致编译器警告(Linux上的g++ v3.4.):
warning: the use of `tmpnam' is dangerous, better use `mkstemp'
那么,有没有可移植的方法来创建一个指向临时文件的std::ofstream
?