std::tmpnam

来自cppreference.com
< cpp‎ | io‎ | c
 
 
 
 
在标头 <cstdio> 定义
char* tmpnam(char* filename );

创建不指名当前已存在文件的独有文件名,并将它存储于 filename 所指向的字符串。函数足以生成至多 TMP_MAX 个独有的文件名,但其一些或全部可能已在使用中,从而不适合作为返回值。

std::tmpnam 修改静态状态,而且不要求为线程安全。

目录

[编辑]参数

filename - 指向足以保有至少 L_tmpnam 个字节的字符数组的指针,用作结果缓冲区。若传递空指针,则返回指向内部静态缓冲区的指针。

[编辑]返回值

filename 不是空指针则为 filename。否则为指向内部静态缓冲区的指针。若无法生成适合的文件名,则返回空指针。

[编辑]注解

尽管 std::tmpnam 生成的文件名难以预测,但从 std::tmpnam 返回到程序使用返回的文件名去真正创建一个文件之间,可能会有另一个进程抢用这个文件名去创建文件。标准库函数 std::tmpfile 和 POSIX 函数 mkstemp 不会有这个问题(但仅使用 C 标准库创建独一的目录仍然会要求使用 std::tmpnam)。

POSIX 系统额外定义了一个名字类似的函数 tempnam(),它允许你选择返回文件名所在的目录(默认使用可选定义的宏 P_tmpdir)。

[编辑]示例

#include <cstdio>#include <iostream>#include <string>   int main(){std::string name1 = std::tmpnam(nullptr);std::cout<<"临时文件名: "<< name1 <<'\n';   char name2[L_tmpnam];if(std::tmpnam(name2))std::cout<<"临时文件名: "<< name2 <<'\n';}

可能的输出:

临时文件名: /tmp/fileDjwifs 临时文件名: /tmp/fileEv2bfW

[编辑]参阅

创建并打开一个临时、自动移除的文件
(函数)[编辑]
返回一个适用于临时文件的目录
(函数)[编辑]
tmpnam 的 C 文档
close