Namespaces
Variants

std:: tmpnam

From cppreference.net
< 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 库创建唯一目录,仍需要借助 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

参见

创建并打开一个临时自动删除文件
(函数)
返回适用于临时文件的目录
(函数)
C 文档 关于 tmpnam