简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!
优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀
优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀
人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.
1.前言
本篇目的:C语言之mkdtemp()固定占位符"XXXXXX"用法实例
2.mkdtemp函数介绍
- Linux 系统中的 mkdtemp 函数是一个非常有用的 C 语言函数,用于创建一个临时目录。这个函数可以简化开发过程,特别是在需要频繁创建临时目录的情况下。在本文中,我们将介绍 mkdtemp 函数的基本概念、用法和返回值。
- 基本概念
mkdtemp 函数定义在 unistd.h 头文件中,其作用是根据给定的模板字符串创建一个临时目录。这个目录会被创建在全局目录 /tmp 中,除非设置了环境变量 TMPDIR。模板字符串通常包含一个或多个 X 字符,这些字符将在创建目录时被随机生成的字符序列替换。
- 函数原型
char *mkdtemp(char *template);
- 参数
template:指向一个字符串的指针,该字符串包含一个模板,其中包含一个或多个 X 字符。这些 X 字符将在创建目录时被随机生成的字符序列替换。
- 返回值
如果 mkdtemp 函数成功创建了一个临时目录,则返回指向该目录的指针。
如果发生错误,则返回 NULL,并设置 errno 来指示错误原因。
3.mkdtemp函数用法实例
<1>.mkdtemp函数用法描述
DESCRIPTION
The mkdtemp() function generates a uniquely named temporary directory from template. The last six characters of template must be XXXXXX and these are replaced with a string that makes the directory name unique. The
directory is then created with permissions 0700. Since it will be modified, template must not be a string constant, but should be declared as a character array.
RETURN VALUE
The mkdtemp() function returns a pointer to the modified template string on success, and NULL on failure, in which case errno is set appropriately.
ERRORS
EINVAL The last six characters of template were not XXXXXX. Now template is unchanged.
翻译下:也就是说:要传入mkdtemp函数的字符串的最后必须是以"XXXXXX"结尾的,否则无法生成一个临时随机的目录。
<2>.mkdtemp函数实现
<1>.mkdtemp函数调用mktemp_internal函数
<2>.mktemp_internal函数实现
mktemp_internal函数中,可以看出通过MIN_X对’X’字符做判断,是否等于6个,第36行得知MIN_X等于6。
<3>.mkdtemp函数用法实例
v1.0
#include <iostream>
#include <stdlib.h>
using namespace std;
int main(){
char input_path[128] = "Binder_XXX";
char *output_path = nullptr;
output_path = mkdtemp(input_path);
printf("xxx---->output_path = %s\n",output_path);
}
打印:
xxx---->output_path = (null)
如果input_path字符串结尾不是"XXXXXX",则output_path为空。
v2.0
#include <iostream>
#include <stdlib.h>
using namespace std;
int main(){
char input_path[128] = "Binder_XXXXXX";
char *output_path = nullptr;
output_path = mkdtemp(input_path);
printf("xxx---->output_path = %s\n",output_path);
}
打印:
xxx---->output_path = Binder_ORp4fy
如果input_path字符串结尾是"XXXXXX",则 Binder_ORp4fy,并且是随机的,这个是我们想要的结果。