Sod*_*hty 4 linux api warnings libc
(注意:这不是一个重复的问题)
我正在使用 libc 函数tmpnam,并收到以下警告:
warning: the use of 'tmpnam' is dangerous, better use 'mkstemp'
Run Code Online (Sandbox Code Playgroud)
我的问题不是“如何禁用警告”,而是“我应该使用什么功能”?mkstemp没有帮助,因为我没有尝试创建临时文件 - 我正在创建一个临时目录。而且 AFAIK,没有用于此的 API 函数。
所以,如果我不应该使用tmpnam什么我我应该用?
您正在寻找mkdtemp:
mkdtemp - create a unique temporary directory
Run Code Online (Sandbox Code Playgroud)
例如,
#include <stdlib.h>
#include <string.h>
...
char templatebuf[80];
char *mkdirectory = mkdtemp(strcpy(templatebuf, "/tmp/mkprogXXXXXX"));
Run Code Online (Sandbox Code Playgroud)
使用strcpy以确保参数传递给mkdtemp可写(C89),或
#include <stdlib.h>
...
char templatebuf[] = "/tmp/mkprogXXXXXX";
char *mkdirectory = mkdtemp(templatebuf);
Run Code Online (Sandbox Code Playgroud)
用 c99。
由于该功能是“新的”(仅在过去十年内标准化,尽管在 1990 年代中期在 Linux 上提供),您需要在带有预处理器定义的头文件中打开该功能(可能因平台而异)其他)。最简单的 Linux 是定义_GNU_SOURCE,例如,
gcc -D_GNU_SOURCE -o foo foo.c
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10759 次 |
| 最近记录: |