Хорошо, mkstemp
является предпочтительным способом создания временного файла в POSIX.
Но он открывает файл и возвращает int
, который является файловым дескриптором. Из этого я могу создать только FILE *, но не std::ofstream
, который я бы предпочел в С++. (По-видимому, в AIX и некоторых других системах вы можете создать std::ofstream
из дескриптора файла, но мой компилятор жалуется, когда я пытаюсь это сделать.)
Я знаю, что могу получить имя файла temp с tmpnam
, а затем открыть с ним свой собственный поток, но это, по-видимому, небезопасно из-за условий гонки и приводит к предупреждению компилятора (g++ v3.4. на Linux):
warning: the use of `tmpnam' is dangerous, better use `mkstemp'
Итак, есть ли какой-либо переносной способ создания std::ofstream
для временного файла?