命名空间
变体
操作

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 库创建唯一目录仍然需要使用 tmpnam)。

POSIX 系统还定义了同名函数 tempnam,它可以选择目录(默认情况下为可选定义的宏 P_tmpdir)。

[编辑] 示例

#include <cstdio>
#include <iostream>
#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 << '\n';
}

可能的输出

temporary file name: /tmp/fileDjwifs
temporary file name: /tmp/fileEv2bfW

[编辑] 参见

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