(注意:这是不重复的问题)
我正在使用libc函数tempnam
,并收到以下警告:
warning: the use of 'tempnam' is dangerous, better use 'mkstemp'
我的问题不是“如何禁用警告”,而是“我应该使用什么功能”? mkstemp
没有帮助,因为我没有尝试创建临时文件 - 我正在创建一个临时的目录。和AFAIK一样,没有API函数。
所以,如果我不应该使用tempnam
,我应该使用什么我?
答案 0 :(得分:3)
您正在寻找mkdtemp
:
mkdtemp - create a unique temporary directory
如,
#include <stdlib.h>
#include <string.h>
...
char templatebuf[80];
char *mkdirectory = mkdtemp(strcpy(templatebuf, "/tmp/mkprogXXXXXX"));
使用strcpy
确保传递给mkdtemp
的参数是可写的(c89),或
#include <stdlib.h>
...
char templatebuf[] = "/tmp/mkprogXXXXXX";
char *mkdirectory = mkdtemp(templatebuf);
用c99。
由于该功能是&#34; new&#34; (仅在过去十年中标准化,尽管在20世纪90年代中期在Linux上提供),您需要使用预处理器定义(可能因平台而异)在头文件中打开该功能。最简单的Linux是定义_GNU_SOURCE
,例如,
gcc -D_GNU_SOURCE -o foo foo.c