李晨晨的嵌入式学习 DAY20

news2024/12/25 13:12:23

今天主要对zuot学习函数进行了补充

一,文件IO函数

1.fileno函数 类型转换函数

函数原型:int fileno(FILE *stream);

功能:fileno函数用于取得参数stream指定的文件流所使用的文件描述符。文件描述符是一个非负整数,用于在底层操作系统中表示打开的文件、套接字或其他I/O资源。

返回值:返回指定文件流的文件描述符。如果失败,则返回-1,并设置errno以指示错误。

2.fdopen函数 类型转换

函数原型:FILE *fopen(const char *filename, const char *mode);

功能:fopen函数用于以指定的模式(如只读、只写、追加等)打开一个文件,并返回一个指向FILE对象的指针。该FILE对象用于后续的读写操作。

参数:

filename:要打开的文件名。
mode:打开文件的模式,如"r"(只读)、"w"(只写,文件不存在则创建,存在则清空)、"a"(追加,文件不存在则创建)等。

返回值:成功时返回一个指向FILE的指针,失败时返回NULL,并设置errno以指示错误。

二,文件目录相关操作

文件目录操作三步走,opendir, readdir, closedir

1.Opendir函数

函数原型:
#include <sys/types.h>
#include <dirent.h>
DIR *opendir(const char *name);

功能:
opendir函数用于打开一个目录,并返回一个指向该目录的句柄(DIR*),这个句柄将在后续的readdir调用中使用。如果目录无法打开,则返回NULL。

参数:

name:指定需要打开的目录路径名,可以是绝对路径,也可以是相对路径。

返回值:

成功时,返回指向DIR结构体的指针,用于后续的目录读取操作。
失败时,返回NULL,并设置相应的errno以指示错误。

DIR *opendir 目录流指针

2.Readdir函数

函数原型:
#include <dirent.h>
struct dirent *readdir(DIR *dirp);


功能:
readdir函数用于读取opendir返回的目录流中的下一个目录条目(即文件或子目录的信息)。每次调用readdir都会返回目录流中的下一个条目,直到到达目录流的末尾或发生错误。

参数:

dirp:由opendir函数返回的目录句柄。

返回值:

成功时,返回一个指向struct dirent结构体的指针,该结构体包含了目录条目的信息,如文件名(d_name)、inode号(d_ino)等。
当到达目录流的末尾或发生错误时,返回NULL。可以通过检查errno来区分是到达末尾还是发生错误。

使用时,一般需要循环读取

struct dirent * info 为指针

3.Readdir函数中要用的宏


4.chdir  // cd  切换路径

函数原型:
#include <unistd.h>
int chdir(const char *path);


功能:
chdir 函数用于更改进程的当前工作目录到指定的路径。

参数:

path:指向新工作目录路径的字符串。

返回值:

成功时,返回 0。
失败时,返回 -1,并设置 errno 以指示错误。

5.getcwd  //  pwd   打印当前工作路径

函数原型:
#include <unistd.h>
char *getcwd(char *buf, size_t size);


功能:
getcwd 函数用于获取当前工作目录的完整路径,并将其存储在 buf 指向的数组中。

参数:

buf:指向用于存储当前工作目录路径的字符数组的指针。如果此参数为 NULL,函数将分配足够的内存来存储路径。
size:buf 指向的数组的大小。

返回值:

成功时,返回 buf 指针(如果 buf 不是 NULL)。如果 buf 是 NULL,则返回一个指向新分配的字符串的指针,该字符串必须使用 free() 函数释放。
失败时,返回 NULL,并设置 errno 以指示错误。

6.mkdir函数 创建文件夹

函数原型:
#include <sys/stat.h>
#include <sys/types.h>
int mkdir(const char *pathname, mode_t mode);


功能:
mkdir 函数用于创建一个新目录。

参数:

pathname:指向要创建的新目录的路径的字符串。
mode:指定新目录的权限。这些权限在创建时会被进程的 umask 值修改。

返回值:

成功时,返回 0。
失败时,返回 -1,并设置 errno 以指示错误。

7.rmdir 移除文件夹(文件夹要为空)

函数原型:
#include <unistd.h>
int rmdir(const char *pathname);


功能:
rmdir 函数用于删除一个空目录。

参数:

pathname:指向要删除的目录的路径的字符串。

返回值:

成功时,返回 0。
失败时,返回 -1,并设置 errno 以指示错误(例如,如果目录不为空)。

这些函数在处理文件系统和目录操作时非常有用,特别是在需要编写跨平台或基于 UNIX 的系统编程任务时。

8.stat函数

stat 函数原型

在 C 语言中,stat 函数的原型定义在 <sys/stat.h> 头文件中,如下所示:

#include <sys/stat.h>
#include <unistd.h>

int stat(const char *pathname, struct stat *buf);

pathname 参数是一个指向以 null 结尾的字符串的指针,该字符串包含了要查询状态的文件或目录的路径。
buf 参数是一个指向 struct stat 结构的指针,该结构将被填充以描述文件或目录的状态。
struct stat 结构

struct stat 结构包含了多个字段,用于描述文件或目录的各种属性。一些常用的字段包括:

st_mode:文件类型和权限。
st_size:文件大小(以字节为单位)。
st_uid 和 st_gid:文件的所有者和组 ID。
st_mtime、st_atime、st_ctime:文件的最后修改时间、最后访问时间和最后状态改变时间(以自 Unix 纪元(1970-01-01 00:00:00 UTC)以来的秒数表示)。

stat函数的打印

其中st_mode的宏

st_mode 是 struct stat 结构体中的一个成员,它是一个 32 位无符号整型(mode_t),用于描述文件的类型和权限。在 UNIX 和类 UNIX 系统(包括 Linux)中,st_mode 字段包含了多个位(bit)的信息,这些位被用来表示文件的类型、所有者权限、组权限以及其他用户的权限等。
 

S_IFMT:文件类型的位遮罩(mask),用于提取文件类型信息。
S_IFSOCK:套接字文件(socket)。
S_IFLNK:符号链接(symbolic link)。
S_IFREG:普通文件(regular file)。
S_IFBLK:块设备文件(block device)。
S_IFDIR:目录(directory)。
S_IFCHR:字符设备文件(character device)。
S_IFIFO:管道文件(FIFO,First In First Out)。

这些宏定义用于检查文件类型,例如,要检查一个文件是否是目录,可以使用 S_ISDIR(st.st_mode)。

权限宏:

S_IRWXU、S_IRUSR、S_IWUSR、S_IXUSR:分别表示文件所有者具有读、写、执行权限。
S_IRWXG、S_IRGRP、S_IWGRP、S_IXGRP:分别表示与文件所有者同组的用户具有读、写、执行权限。
S_IRWXO、S_IROTH、S_IWOTH、S_IXOTH:分别表示其他用户具有读、写、执行权限。

这些宏定义用于检查文件的权限,例如,要检查文件所有者是否具有执行权限,可以使用 (st.st_mode & S_IXUSR)。

特殊权限宏:

S_ISUID、S_ISGID、S_ISVTX:分别表示设置用户ID(set-user-ID)、设置组ID(set-group-ID)和粘滞位(sticky bit)的特殊权限。

这些宏定义用于检查文件的特殊权限,例如,要检查文件是否具有设置用户ID的特殊权限,可以使用 (st.st_mode & S_ISUID)。
 

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

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

相关文章

C/C++开发,opencv光流法跟踪特征点

目录 一、Lucas-Kanade光流法 1.1cv::ORB特征点提取方法 1.2 cv::calcOpticalFlowPyrLK函数 二、完整案例实现 2.1 程序代码 2.2 程序编译及输出 2.3 读取视频文件方式补充 一、Lucas-Kanade光流法 在 OpenCV 中&#xff0c;使用 特征检测器(例如ORB ,Oriented FAST and…

基于深度学习的地磁活动、扰动预测模型

注&#xff1a;包括SYM-H Index和Storm Intensity index A transformer-based framework for predicting geomagnetic indices with uncertainty quantification Journal of Intelligent Information Systems 18 November 2023 A transformer-based framework for predicting…

IP地址怎样实现安全的HTTPS访问?

IP实现HTTPS访问是一个涉及证书申请、服务器配置及网络安全的过程。以下是实现IP实现HTTPS访问的详细步骤&#xff1a; 公网IP地址的重要性&#xff1a;要实现HTTPS访问&#xff0c;必须拥有一个公网IP地址&#xff0c;这是从互联网直接访问网站的基础条件。 管理权限的必要性&…

高效批量提取PPT幻灯片中图片的方法

处理包含大量图片的PPT&#xff08;PowerPoint&#xff09;幻灯片已成为许多专业人士的日常任务之一。然而&#xff0c;手动从每张幻灯片中逐一提取图片不仅耗时耗力&#xff0c;还容易出错。为了提升工作效率&#xff0c;减少重复劳动&#xff0c;探索并实现一种高效批量提取P…

“网络信息安全”你真的了解吗?(非常详细)零基础入门到精通,收藏这一篇就够了

全面了解网络信息安全 01 导语&#xff1a; 在数字化浪潮中&#xff0c;我们每个人的生活都越来越依赖于网络。银行账户、个人隐私、企业机密——几乎所有的敏感信息都在网络上流转。随之而来的是不断升级的网络攻击和诈骗手段。本文将深入探讨网络信息安全的意义、挑战、防…

Candance Allegro 入门教程笔记:Cadence Allegro 17.4安装教程

文章目录 一、安装Cadence Allegro 17.4 安装包二、安装Candance Allegro Manager三、安装007号 补丁四、用阿狸狗破戒大师 破戒Candance Allegro 17.4软件 Cadence Allegro QQ交流学习裙&#xff1a;173416628 凡亿教育的Candance Allegro 17.4基础教程 小哥Cadence Allegro …

SSM伊犁旅游攻略网站—计算机毕业设计源码15961

目 录 摘要 1 绪论 1.1 开发背景 1.2开发意义 1.3ssm框架 1.4论文结构与章节安排 2 2 伊犁旅游攻略网站系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据增加流程 2.2.2 数据修改流程 2.2.3数据删除流程 2.3 系统功能分析 2.3.1功能性分析 2.3.2非功能性分析…

48天笔试训练错题——day43

目录 选择题 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 编程题 1. 求和 选择题 1. synflood 是 syn 泛洪攻击。有一个恶意主机&#xff0c;伪造大量的 IP 地址&#xff0c;然后给服务器发送 SYN 请求&#xff0c;但是不进行第三次握手的回复&#xff0c;这样就会消耗服务器…

DITA发布MS Word样式定制

- 1 - 概述 上一期我们介绍了摩拿科技针对DITA发布PDF样式定制。 发布PDF通常能够满足大部分手册内容查看的需求&#xff0c;但是有时候公司的销售和服务部门的同事或者客户想要一个能修改的文件&#xff0c;这样可以做二次加工并生成自己想要的输出。这时候MS Word就能胜任…

SpringBoot中使用过滤器filter

过滤器Filter 在 Java 中&#xff0c;Filter&#xff08;过滤器&#xff09;是一种用于对请求进行预处理和后处理的机制。 工作原理&#xff1a; 当一个请求到达服务器时&#xff0c;会先经过一系列配置好的过滤器。过滤器可以检查请求的参数、头信息、请求体等内容&#xf…

buuctf CrackRTF (补)

另一种做题方式。 前言&#xff1a;学习笔记。 例题学习&#xff0c;涨大知识。 深入刨析&#xff0c;学习。 常规什么的这次就不写了&#xff0c;这篇wp主要是用于学习&#xff0c;以及分析。 以资料&#xff0c;代码理解&#xff0c;编程思维、编程手法等为主。 重在分析学…

php常见代码执行函数和常见系统命令执行函数。

PHP中常见代码执行函数&#xff1a; array_map() eval() assert() preg_replace() call_user_func() $a($b)动态函数 PHP中常见系统命令执行函数&#xff1a; system() exec() shell_exec() passthru() popen() 反引号"" 命令执行危险函数之assert函数…

成都云飞浩容文化传媒有限公司正规吗怎么样?

在数字经济的浪潮中&#xff0c;电商行业如日中天&#xff0c;成为推动经济增长的重要引擎。在这片蓝海中&#xff0c;如何脱颖而出&#xff0c;实现品牌与销量的双重飞跃&#xff1f;成都云飞浩容文化传媒有限公司&#xff0c;作为电商服务领域的佼佼者&#xff0c;正以专业的…

Echarts图表官网打开太慢怎么办?echarts.apache.org

1.ping官网&#xff0c;获取ip 使用 WIN R 输入cmd 进入命令控制台&#xff0c;ping 官网地址&#xff1a;echarts.apache.org 获取到的IP是 151.101.2.132 2.给hosts文件添加内容 使用文本编辑工具或编译器 打开 C:\Windows\System32\drivers\etc\hosts 文件&#xff0c;在最…

Linux基础知识之管理用户密码

往期系列内容回顾&#xff1a; Linux基础知识之Shell命令行及终端中的快捷键 Linux基础知识之man手册页_man 手册页-CSDN博客 Linux基础知识之Linux文件系统权限-CSDN博客 Linux基础知识之使用 Shell 扩展匹配文件名-CSDN博客 shadow 密码和密码策略 用户密码是Linux用户…

文件目录。

1、转换函数fileno和fdopen 一、文件目录 打开目录&#xff1a;opendir 读取目录&#xff1a;readdir&#xff1a;返回值是info&#xff08;目录中的一项内容&#xff09;&#xff0c;type表示类型是目录。 关闭目录&#xff1a;closedir 输出的是所有文件&#xff0c;包括隐…

[工具]-gitee+pycharm-配置

安装git ​ 查看git是否安装设置成功&#xff1a; ​ git config user.name ​ git config user.email ​ 码云账号设置邮箱 pycharm设置gitee 打开 PyCharm&#xff0c;在 Settings - Plugins 里面&#xff0c;搜索 Gitee 插件&#xff0c;安装后重启 PyCharm。 pychar…

Java设计模式(原型模式)

定义 使用原型实例指定待创建对象的类型&#xff0c;并且通过复制这个原型来创建新的对象。 角色 Prototype&#xff08;抽象原型角色&#xff09; ConcretePrototype&#xff08;具体原型角色&#xff09; Client&#xff08;客户端角色 优点 简化对象的创建过程&#xff0c…

Java网络编程、TCP、UDP、Socket通信---初识版

标题 InetAddress----IP地址端口号协议&#xff08;UDP/TCP&#xff09;JAVA操作-UDP一发一收模式多发多收 JAVA操作-TCP一发一收多发多收 实现群聊功能BS架构线程池优化 InetAddress----IP地址 端口号 协议&#xff08;UDP/TCP&#xff09; JAVA操作-UDP 一发一收模式 多发多收…

用Java手写jvm之模拟数组相关操作

写在前面 本文看下如何模拟数组相关的操作&#xff0c;主要是实现数组相关的指令&#xff0c;关于数组相关的指令可以参考这篇文章。 1&#xff1a;正文 简单起见这里我们仅仅实现int基础数据类型的一维数组。 newarray指令对应的类 package com.dahuyou.tryy.too.simulat…