tmpnam 或 tempnam 子例程

用途

用于构造临时文件的名称。

标准 C 库 (libc.a)

语法

#include <stdio.h>
char *tmpnam ( String)
char *String;
char *tempnam ( Directory,  FileXPointer)
const char *Directory, *FileXPointer;

描述

注意: 每次调用 滕普南滕姆南 子例程时,它们都将生成不同的文件名。 如果单个进程调用超过 16,384 次 (TMP_MAX) ,那么这些子例程会回收先前使用的名称。

滕普南滕姆南 子例程生成用于临时文件的文件名。 tmpnam 子例程使用 stdio.h 文件中定义为 P_tmpdir 的路径名生成文件名。

使用 滕普南 子例程创建的文件驻留在临时使用的目录中。 文件名是唯一的。 应用程序必须创建并除去该文件。

滕姆南 子例程使您能够定义目录。 目录 参数指向要在其中创建该文件的目录的名称。 如果 Directory 参数为空指针或指向不是目录名称的字符串,那么将使用 stdio.h 文件中定义为 P_tmpdir 的路径前缀。 对于具有具有初始字母序列的临时文件的应用程序,请使用 FileXPointer 参数来定义序列。 FileXPointer 参数 (空指针或最多 5 字节的字符串) 用作文件名的开头。

在创建文件名和打开文件之间,另一个进程可以创建具有相同名称的文件。 如果另一个进程使用这些子例程或 mktemp 子例程,并且选择文件名以避免其他方法重复,那么不太可能发生名称重复。

参数

描述
String 指定至少由 L_tmpnam(在 stdio.h 文件中定义的常量) 指定的字节数组成的数组的地址。

如果 字符串 参数具有空值,那么 滕普南 子例程会将其结果放入内部静态区域并返回指向该区域的指针。 下一次调用此子例程会破坏该区域的内容。

如果 字符串 参数的值不为空,那么 滕普南 子例程将其结果放入指定的数组中并返回 字符串 参数的值。

目录 指向要在其中创建该文件的目录的路径名。

滕姆南 子例程控制对目录的选择。 如果 Directory 参数是空指针或指向不是相应目录的路径名的字符串,那么将使用 stdio.h 文件中定义为 P_tmpdir 的路径名。 如果该路径名不可访问,那么将使用 /tmp 目录。 您可以通过在用户环境中提供环境变量 TMPDIR来绕过对路径名的选择。 TMPDIR 环境变量的值是期望的临时文件目录的路径名。

FileXPointer 一个指针,它指向文件名开始的起始字符序列。 FileXPointer 参数值可以是空指针,也可以指向要用作临时文件名的第一个字符的字符串。 允许的字符数取决于文件系统,但允许的 5 字符数为 5 个字节。

返回值

完成后, 滕姆南 子例程使用 马洛克 子例程为字符串分配空间,将生成的路径名放入该空间,并返回指向该空间的指针。 否则,它将返回空指针,并设置 错误号 全局变量以指示错误。 当不再需要该空间时,可以在 自由 子例程中使用 滕姆南 返回的指针。

错误代码

如果不成功, 滕姆南 子例程将返回以下错误代码:

描述
ENOMEM 没有足够的存储空间可用。
描述
ENINVAL 指示无效 值。