说明

切勿使用此功能;参见错误。

mktemp()函数从模板生成唯一的临时文件名。模板的最后六个字符必须为XXXXXX,并用使文件名唯一的字符串替换。由于将对其进行修改,因此模板不能为字符串常量,而应声明为字符数组。

属性

有关本节中使用的术语的说明,请参见attribute(7)。

InterfaceAttributeValue
mktemp()Thread safetyMT-Safe

错误说明

EINVAL
模板的最后六个字符不是XXXXXX。

名称

mktemp-制作一个唯一的临时文件名

返回值

mktemp()函数始终返回模板。如果创建了唯一名称,则模板的最后六个字节将被修改,以使结果名称是唯一的(即,尚不存在)。如果无法创建唯一名称,则将模板设为空字符串,并将errno设置为指示错误。

另外参见

mktemp(1),mkdtemp(3),mkstemp(3),tempnam(3),tmpfile(3),tmpnam(3)

遵循规范

4.3 BSD,POSIX.1-2001。 POSIX.1-2008删除了mktemp()的规范。

出版信息

这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/

语法

#include <stdlib.h>

char *mktemp(char *template);

glibc的功能测试宏要求(请参阅feature_test_macros(7)):

mktemp():

Since glibc 2.12:
(_XOPEN_SOURCE>= 500)&&! (_POSIX_C_SOURCE>= 200112L) || / * Glibc自2.19起:* / -_DEFAULT_SOURCE || / * Glibc
Before glibc 2.12:
_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE>= 500
MKTEMP - Linux手册页

Linux程序员手册 第3部分
更新日期: 2017-09-15

BUGS

永远不要使用mktemp()。一些实现遵循4.3BSD并用当前进程ID和单个字母替换XXXXXX,以便最多可以返回26个不同的名称。由于一方面名称很容易猜测,另一方面在测试名称是否存在与打开文件之间存在竞争,因此每次使用mktemp()都会带来安全风险。 mkstemp(3)和mkdtemp(3)避免了竞争。

日期:2019-08-20 18:00:53 来源:oir作者:oir