• C语言之mkdtemp()特定占位符:XXXXXX 用法实例(八十五)


    简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!

    优质专栏:Audio工程师进阶系列原创干货持续更新中……】🚀
    优质专栏:多媒体系统工程师系列原创干货持续更新中……】🚀

    人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.

    更多原创,欢迎关注:Android系统攻城狮

    欢迎关注Android系统攻城狮

    1.前言

    本篇目的:C语言之mkdtemp()固定占位符"XXXXXX"用法实例

    2.mkdtemp函数介绍

    • Linux 系统中的 mkdtemp 函数是一个非常有用的 C 语言函数,用于创建一个临时目录。这个函数可以简化开发过程,特别是在需要频繁创建临时目录的情况下。在本文中,我们将介绍 mkdtemp 函数的基本概念、用法和返回值。
    1. 基本概念

    mkdtemp 函数定义在 unistd.h 头文件中,其作用是根据给定的模板字符串创建一个临时目录。这个目录会被创建在全局目录 /tmp 中,除非设置了环境变量 TMPDIR。模板字符串通常包含一个或多个 X 字符,这些字符将在创建目录时被随机生成的字符序列替换。

    1. 函数原型

    char *mkdtemp(char *template);

    1. 参数

    template:指向一个字符串的指针,该字符串包含一个模板,其中包含一个或多个 X 字符。这些 X 字符将在创建目录时被随机生成的字符序列替换。

    1. 返回值

    如果 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 
    #include 
    
    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);
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    打印:

    xxx---->output_path = (null)

    如果input_path字符串结尾不是"XXXXXX",则output_path为空。

    v2.0
    #include 
    #include 
    
    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);
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    打印:

    xxx---->output_path = Binder_ORp4fy

    如果input_path字符串结尾是"XXXXXX",则 Binder_ORp4fy,并且是随机的,这个是我们想要的结果。

  • 相关阅读:
    第75步 时间序列建模实战:多步滚动预测 vol-3(以决策树回归为例)
    SpringBoot项目打包与运行
    框架的优点(SpringBoot VS Servlet)
    如何准确且可解释地评估大模型量化效果?
    【简单选择排序】
    linux内核printk的一些并发处理
    【图像去噪】基于PM模型实现图像降噪附matlab代码
    Ubuntu 18.04 LTS PWN安装
    盘点13种即插即用的涨点模块,含注意力机制、卷积变体、Transformer变体
    【Flink实战】玩转Flink里面核心的Sink Operator实战
  • 原文地址:https://blog.csdn.net/u010164190/article/details/136261270