好的,mkstemp
是在POSIX中创建临时文件的首选方法。如何创建std :: ofstream到临时文件?
但它打开文件并返回一个int
,这是一个文件描述符。从那我只能创建一个文件*,但不是std::ofstream
,我更喜欢用C++。 (显然,在AIX和其他一些系统,你可以从一个文件描述符创建一个std::ofstream
,但是当我尝试,我的编译器抱怨。)
我知道我可以用tmpnam
得到一个临时文件名,然后打开我自己它ofstream的,但是这显然是不安全的,由于竞态条件,并导致编译器警告(G ++ V3.4在Linux上。):
warning: the use of `tmpnam' is dangerous, better use `mkstemp'
那么,有没有建立一个std::ofstream
到一个临时任何便携式方式文件?
这不能在Linux上用我的g ++ v3.4.4编译。显然只有一些平台具有这种功能。 – Frank 2009-01-31 21:54:08
谢谢!对于你的第二种方法(使用mkstemp,然后是ofstream):在I/O方面它仍然有效吗?这将访问文件系统两次,对吧?我们的文件系统非常慢,我担心会给它带来不必要的负担。 – Frank 2009-01-31 22:28:55