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