std::tmpnam 定义于头文件<cstdio> char*tmpnam(char*filename); 创建不指名当前存在的文件的独有文件名,并将它存储于filename所指向的字符串。函数足以生成至多TMP_MAX个独有的文件名,但其一些或全部可能已在使用中,从而不适合作为返回值。 std::tmpnam修改静态状态,而且不要求为线程安全。
std::tmpnam 编辑 定义于头文件 <cstdio> char* tmpnam( char* filename ); 创建不指名当前存在的文件的独有文件名,并将它存储于 filename 所指向的字符串。函数足以生成至多 TMP_MAX 个独有的文件名,但其一些或全部可能已在使用中,从而不适合作为返回值。 std::tmpnam 修改静态状态,而且不要求为线程...
尽管std::tmpnam 生成的文件名难以预测,但从 std::tmpnam 返回到程序使用返回的文件名去真正创建一个文件之间,可能会有另一个进程抢用这个文件名去创建文件。标准库函数 std::tmpfile 和POSIX 函数 mkstemp 不会有这个问题(但仅使用 C 标准库创建独一的目录仍然会要求使用 std::tmpnam)。
#include <iostream> #include <cstdio> #include <string> int main() { std::string name1 = std::tmpnam(nullptr); std::cout << "temporary file name: " << name1 << '\n'; char name2[L_tmpnam]; if (std::tmpnam(name2)) { std::cout << "temporary file name: " << name2 <...