嵌入式学习——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变量

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

        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/24866.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LLMs,即大型语言模型

LLMs&#xff0c;即大型语言模型&#xff0c;是一类基于深度学习的人工智能模型&#xff0c;它们通过海量的数据和大量的计算资源进行训练&#xff0c;可以理解和生成自然语言。LLMs的核心架构是Transformer&#xff0c;其关键在于自注意力机制&#xff0c;使得模型能够同时对…

腾讯元宝APP上线,AIGC产品的未来何去何从?

目录 腾讯元宝APP上线&#xff0c;AIGC产品的未来何去何从&#xff1f; 一、大模型AIGC产品概览 二、使用体验分享 1. 百度大脑 2. 阿里巴巴的AliMe 3. 字节跳动的TikTok AI 4. 腾讯元宝APP 小结 三、独特优势和倾向选择 1. 字节豆包 2. 百度文心一言 3. 阿里通义千…

【Jenkins】Jenkins - 节点

选择系统设置 - 节点设置 -添加节点 下载对应的 jar包 &#xff0c;执行命令 测试运行节点生效 1. 创建测试项目 test1 2. 选择节点执行&#xff1a; 在配置页面的“General”部分&#xff0c;找到“限制项目的运行节点”&#xff08;Restrict where this project can be run…

lubuntu / ubuntu 配置静态ip

一、查看原始网络配置信息 1、获取网卡名称 ifconfig 2、查询网关IP route -n 二、编辑配置文件 去/etc/netplan目录找到配置文件&#xff0c;配置文件名一般为01-network-manager-all.yaml sudo vim /etc/netplan/01-network-manager-all.yaml文件打开后内容如下 # This …

VScode的插件使用

1、正则插件-1 2、AI助手工具-1-fittentech 3、画图工具-1 4、GitHub的查看工具 5、shell测试工具 6、时序画图工具

实用的 C 盘搬家软件

一、简介 1、一款专门用于 Windows 系统的文件夹移动工具&#xff0c;它允许用户将程序或游戏的安装文件夹从一台驱动器移动到另一台驱动器&#xff0c;或者同一个驱动器内的不同路径&#xff0c;而无需重新安装或破坏现有的程序安装。 二、下载 1、下载地址&#xff1a; 官网链…

重新学习stm32(序)stm32简介

PS&#xff1a;最近毕设马上告一段落&#xff0c;在编写过程中发现自己的只是框架有很大问题&#xff0c;遂以此系列文章来整理知识架构。 STM32&#xff0c;其中的ST 代表的是意法半导体&#xff1b;M 是 Microelectronics 的缩写&#xff0c;即微控制器&#xff1b; 32 表示 …

并查集进阶版

过关代码如下 #define _CRT_SECURE_NO_WARNINGS #include<bits/stdc.h> #include<unordered_set> using namespace std;int n, m; vector<int> edg[400005]; int a[400005], be[400005]; // a的作用就是存放要摧毁 int k; int fa[400005]; int daan[400005]…

社交创新:Facebook的技术与产品发展

在当今数字化时代&#xff0c;社交网络已经渗透到我们生活的方方面面&#xff0c;成为了人们日常交流、信息获取和社交互动的主要方式。而在这个众多社交平台中&#xff0c;Facebook作为其中的佼佼者&#xff0c;其技术与产品的发展历程也是一个社交创新的缩影。本文将探索Face…

Unity动态绑定Button事件

Unity动态绑定Button事件 1、单个按钮不带参数 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;public class Test : MonoBehaviour {public Button btn;private void Start(){btn.onClick.AddListener(BtnOnClick);…

算法课程笔记——可撤销并查集

算法课程笔记——可撤销并查集 Gv

【教学类-36-07】20240608动物面具(通义万相)-A4大小7图15手工纸1图

背景需求&#xff1a; 风变的AI对话大师一年到期了&#xff0c;也没有看到续费的按钮。不能使用它写代码了。 MJ早就用完了&#xff0c;最后480次&#xff0c;我担心信息课题会用到它生图&#xff0c;所以不敢用。 最近探索其他类似MJ的免费出图工具——找到了每天给50张免费图…

Rust 编程——prost-build 使用

Prost是一个用于生成Rust语言中的Protocol Buffers定义的库。而prost-build是Prost库的一个工具&#xff0c;用于生成Rust代码。Protocol Buffers是由Google开发的一种轻量级、高效的数据交换格式&#xff0c;可以用于结构化数据的序列化&#xff0c;特别适用于通信协议和数据存…

电调, GPS与飞塔

电调油门行程校准&#xff1a; 断电-----油门推到最高-------电调上电-------滴滴------油门推到最低---滴滴滴---校准完成。 http://【【教程】油门行程校准&#xff08;航模&#xff0c;电机&#xff0c;电调&#xff09;】https://www.bilibili.com/video/BV1yJ411J7aX?v…

Spring之bean的生命周期

Spring之Bean的生命周期详解 在Spring框架中&#xff0c;Bean的创建和管理是通过Spring容器来完成的。Spring Bean生命周期包括实例化、属性填充、初始化、销毁等多个步骤。本文将详细解析Spring中Bean的生命周期&#xff0c;并重点介绍AbstractAutowireCapableBeanFactory类中…

SinoDB数据库隔离级别

本文主要对SinoDB数据库隔离级别及其设置进行介绍。 1. ANSI SQL-92事务隔离 ANSI 委员会定义了以下级别的事务隔离&#xff08;SQL-92&#xff09;&#xff1a; Read uncommittedRead committedRepeatable readSerializable read 查询的隔离级别决定了查询与其他并发执行的…

独立游戏之路 -- 获取OAID提升广告收益

Unity 之 获取手机&#xff1a;OAID、IMEI、ClientId、GUID 前言一、Oaid 介绍1.1 Oaid 说明1.2 移动安全联盟(MSA) 二、站在巨人的肩膀上2.1 本文实现参考2.2 本文实现效果2.3 本文相关插件 三、Unity 中获取Oaid3.1 查看实现源码3.2 工程配置3.3 代码实现3.4 场景搭建 四、总…

6.6SSH的运用

ssh远程管理 ssh是一种安全通道协议&#xff0c;用来实现字符界面的远程登录。远程复制&#xff0c;远程文本传输。 ssh对通信双方的数据进行了加密 用户名和密码登录 密钥对认证方式&#xff08;可以实现免密登录&#xff09; ssh 22 网络层 传输层 数据传输的过程中是加密的 …

【一百零五】【算法分析与设计】分解质因数,952. 按公因数计算最大组件大小,204. 计数质数,分解质因数,埃式筛

分解质因数 题目&#xff1a;分解质因数 题目描述 给定一个正整数 n&#xff0c;编写一个程序将其分解为质因数&#xff0c;并按从小到大的顺序输出这些质因数。 输入格式 一个正整数 n&#xff0c;其中 n 的范围是 1 < n < 10^18。 输出格式 按从小到大的顺序输出 n 的质…

【Oracle生产运维】表空间可用性告警排查处理

1 前言 在生产环境中&#xff0c;一般设置表空间告警阈值是90%&#xff0c;在接到监控报警后&#xff0c;并不是需要立刻对表空间进行扩容。 决定是否扩容主要看表空间最近的增量是多少&#xff0c;假如剩余10%的空间还能支持1个月的增量&#xff0c;那就不需要急着扩容。如果…