(注:这是not重复的问题)
我正在使用 libc 函数tmpnam
,并收到以下警告:
warning: the use of 'tmpnam' is dangerous, better use 'mkstemp'
我的问题不是“如何禁用警告”,而是“我应该使用什么函数”?mkstemp
没有帮助,因为我没有尝试创建临时文件 - 我正在创建一个临时文件目录。 AFAIK,没有 API 函数可以实现这一点。
所以如果我不应该使用tmpnam
, what am我应该用吗?
您正在寻找mkdtemp http://man7.org/linux/man-pages/man3/mkdtemp.3.html:
mkdtemp - create a unique temporary directory
e.g.,
#include <stdlib.h>
#include <string.h>
...
char templatebuf[80];
char *mkdirectory = mkdtemp(strcpy(templatebuf, "/tmp/mkprogXXXXXX"));
using strcpy
确保参数传递给mkdtemp
是可写的(c89),或者
#include <stdlib.h>
...
char templatebuf[] = "/tmp/mkprogXXXXXX";
char *mkdirectory = mkdtemp(templatebuf);
与c99。
由于该功能是“新”功能(尽管在 20 世纪 90 年代中期就在 Linux 上提供了,但在过去十年内才标准化),因此您需要在头文件中使用预处理器定义(这可能因平台而异)来打开该功能。其他)。对于 Linux 最简单的是定义_GNU_SOURCE
, e.g.,
gcc -D_GNU_SOURCE -o foo foo.c
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)