好的,mkstemp
这是在 POSIX 中创建临时文件的首选方式。
但它会打开文件并返回一个int
,这是一个文件描述符。从那我只能创建一个 FILE*,但不能创建一个std::ofstream
,我更喜欢在 C++ 中。std::ofstream
(显然,在 AIX 和其他一些系统上,您可以从文件描述符创建一个,但是当我尝试这样做时,我的编译器会报错。)
我知道我可以得到一个临时文件名,tmpnam
然后用它打开我自己的 ofstream,但这显然是不安全的,因为竞争条件,并导致编译器警告(Linux 上的 g++ v3.4.):
warning: the use of `tmpnam' is dangerous, better use `mkstemp'
那么,是否有任何可移植的方式来创建std::ofstream
临时文件?