我正在为一个库编写测试,该库需要创建一个目录来测试它应该提供的一些功能。我做了一些研究,发现有一个库函数:
#include <stdio.h>
char *tmpnam(char *s);
并且可以将其称为NULL
唯一路径。问题是链接器警告我如下:
warning: the use of `tmpnam' is dangerous, better use `mkstemp'
也如this answer中所建议的那样使用该功能。但是/tmp
一开始的这种硬编码看起来很奇怪。还要检查环境变量TMP
,TMPDIR
等等看起来很复杂。
也许有一些 POSIX 函数可以为我检查这些变量?tmpnam
除了共享静态缓冲区和竞争条件之外,还有其他使用陷阱吗?