当前位置: 首页 > news >正文

嵌入式学习——Linux高级编程复习(目录IO、软硬连接、makefile)——day38

1. 目录IO

        目录IO是指在计算机程序中对文件目录进行操作的一系列输入输出功能。这些操作允许程序创建、读取、修改和删除目录结构。在Unix/Linux系统和类似系统中,目录被视为特殊的文件,可以对其进行打开、读取、写入(修改)和关闭等操作。

2. 目录IO相关函数接口

2.1 opendir

        1. 定义

        2. 功能

        3. 参数

        4. 返回值

        5. 示例程序

        6.注意

2.2 closedir

        1. 定义

        2. 功能

        3. 参数

        4. 返回值

        5. 示例程序

        6.注意

2.3 readdir

        1. 定义

        2. 功能

        3. 参数

    struct dirent {
       ino_t          d_ino;       /* Inode number */
       off_t          d_off;       /* Not an offset; see below */
       unsigned short d_reclen;    /* Length of this record */
       unsigned char  d_type;      /* Type of file; not supported
                                      by all filesystem types */
       char           d_name[256]; /* Null-terminated filename */
    };

        4. 返回值

        5. 示例程序

        6.注意

2.4  mkdir 

        1. 定义

        2. 功能

        3. 参数

        4. 返回值

        5. 示例程序

        6.注意

2.5  umaks 

        1. 定义

        2. 功能

        3. 参数

        4. 返回值

        5. 示例程序

        6.注意

2.6  rmdir 

        1. 定义

        2. 功能

        3. 参数

        4. 返回值

        5. 示例程序

        6.注意

2.7 getcwd

        1. 定义

        2. 功能

        3. 参数

        4. 返回值

        5. 示例程序

        6.注意

2.8 chdir

        1. 定义

        2. 功能

        3. 参数

        4. 返回值

        5. 示例程序

        6.注意

2.9 stat

        1. 定义

        2. 功能

        3. 参数

    struct stat {
       dev_t     st_dev;         /* ID of device containing file */
       ino_t     st_ino;         /* Inode number */
       mode_t    st_mode;        /* File type and mode */
       nlink_t   st_nlink;       /* Number of hard links */
       uid_t     st_uid;         /* User ID of owner */
       gid_t     st_gid;         /* Group ID of owner */
       dev_t     st_rdev;        /* Device ID (if special file) */
       off_t     st_size;        /* Total size, in bytes */
       blksize_t st_blksize;     /* Block size for filesystem I/O */
       blkcnt_t  st_blocks;      /* Number of 512B blocks allocated */

       /* Since Linux 2.6, the kernel supports nanosecond
          precision for the following timestamp fields.
          For the details before Linux 2.6, see NOTES. */

       struct timespec st_atim;  /* Time of last access */
       struct timespec st_mtim;  /* Time of last modification */
       struct timespec st_ctim;  /* Time of last status change */

    #define st_atime st_atim.tv_sec      /* Backward compatibility */
    #define st_mtime st_mtim.tv_sec
    #define st_ctime st_ctim.tv_sec
    };

        4. 返回值

        5. 示例程序

        6.注意

2.10 getpwuid

        1. 定义

        2. 功能

        3. 参数

        struct passwd {
           char   *pw_name;       /* username */
           char   *pw_passwd;     /* user password */
           uid_t   pw_uid;        /* user ID */
           gid_t   pw_gid;        /* group ID */
           char   *pw_gecos;      /* user information */
           char   *pw_dir;        /* home directory */
           char   *pw_shell;      /* shell program */
        };

        4. 返回值

        5. 示例程序

        6.注意

2.11 getgrgid

        1. 定义

        2. 功能

        3. 参数

    struct group {
       char   *gr_name;        /* group name */
       char   *gr_passwd;      /* group password */
       gid_t   gr_gid;         /* group ID */
       char  **gr_mem;         /* NULL-terminated array of pointers
                                  to names of group members */
    };

        4. 返回值

        5. 示例程序

        6.注意

3. 链接文件

3.1 软链接文件(符号链接)

        ln -s 被链接文件 链接文件名
        通过文件名链接

3.2 硬链接文件

        ln 被链接文件 链接文件名

        通过文件在虚拟文件系统(VFS)中的inode节点链接

4. 链接文件函数接口

4.1 symlink(创建软链接)

        1. 定义

        2. 功能

        3. 参数

        4. 返回值

        5. 示例程序

        6. 注意

4.2 link(创建硬链接)

        1. 定义

        2. 功能

        3. 参数

        4. 返回值

        5. 示例程序

        6. 注意

4.3 lreadink

        1. 定义

        2. 功能

        3. 参数

        4. 返回值

        5. 示例程序

        6. 注意

5. 工程管理工具

5.1 在文件夹下编写一个名为makefile的脚本文件

        makefile
        Makefile

5.2 语法规则

        要生成的文件:所有依赖的文件(中间以空格隔开)
            生成方式

5.3 执行步骤

        1.终端输入make
        2.make执行对应目录下的makefile文件
        3.生成makefile文件中第一个目标
        4.查找所有依赖的文件是否都存在
        5.如果存在则利用生成方式生成目标文件
    
    makefile内部维护一个时间戳

5.4 makefile变量

        $@:要生成的文件 
        $^:所有依赖的文件 
        $<:第一个依赖的文件
    
        =        直接赋值
        :=        覆盖赋值
        +=        原来的基础上新加
        ?=        前面没有给变量赋值,则给变量赋等号后的值
                        变量已经有值,不会给变量赋新值

        

相关文章:

  • (2024,Vision-LSTM,ViL,xLSTM,ViT,ViM,双向扫描)xLSTM 作为通用视觉骨干
  • npm安装依赖过慢
  • kafka的leader和follower
  • Java 的循环
  • Java | Leetcode Java题解之第128题最长连续序列
  • 计算文件md5
  • 智能避障小车设计
  • 0109__strip(1) command
  • STM32F103C8T6基于HAL库完成uC/OS-III多任务程序
  • 面试高频问题----5
  • django支持https
  • 【数据结构】平衡二叉树(AVL树)
  • 医疗实施-项目管理04-需求调研
  • 消息队列RabbitMQ
  • 45.报错信息:data 和varbinary在greater than中不兼容
  • 《深入 React 技术栈》
  • 「面试题」如何实现一个圣杯布局?
  • 08.Android之View事件问题
  • 30天自制操作系统-2
  • css的样式优先级
  • leetcode98. Validate Binary Search Tree
  • nodejs调试方法
  • Quartz初级教程
  • Rancher-k8s加速安装文档
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • vue的全局变量和全局拦截请求器
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 百度小程序遇到的问题
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 如何选择开源的机器学习框架?
  • 实现简单的正则表达式引擎
  • 收藏好这篇,别再只说“数据劫持”了
  • 数据科学 第 3 章 11 字符串处理
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • 自定义函数
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • # centos7下FFmpeg环境部署记录
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • #微信小程序:微信小程序常见的配置传值
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (AngularJS)Angular 控制器之间通信初探
  • (离散数学)逻辑连接词
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (七)glDrawArry绘制
  • (学习总结)STM32CubeMX HAL库 学习笔记撰写心得
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • .htaccess配置重写url引擎