四川成都私人网站建设/浙江疫情最新消息

四川成都私人网站建设,浙江疫情最新消息,商业空间设计案例ppt模板,充值选建设银行打不开网站思维导图: 一.文件io的概念 文件IO:指程序和文件系统之间的数据交互 特点: 1.不存在缓冲区,访问速度慢 2.不可以移植,依赖于操作系统 3.可以访问不同的文件类型(软连接,块设备等) 4.文件IO属于系统调…

思维导图:

一.文件io的概念

文件IO:指程序和文件系统之间的数据交互

特点:

1.不存在缓冲区,访问速度慢

2.不可以移植,依赖于操作系统

3.可以访问不同的文件类型(软连接,块设备等)

4.文件IO属于系统调用

5.文件IO在操作文件时使用文件描述符

二.什么是描述符

当操作一个文件的时候,则需要创建并打开一个文件,系统就会给文件分配一个编号,这个编号就是文件描述符

文件描述符本质就是数组的下表,标准IO是对文件IO的二次封装,所以FILE结构体里面存在文件描述符int _fileno;

1.文件描述符:文件描述符的本质就是数组的下表,默认共有1024个文件描述符,范围[0-1023]

        ulimit -a 查看文件描述符的总个数

        修改文件描述符的个数(修改只对当前终端有效)

        ulimit -n 个数 ---》ulimit -n 2048

2.文件描述符的申请规则:分配从小到大,未申请的文件描述符

举例:申请4个文件,则文件描述符 3 4 5 6,关闭4文件描述符,重新申请则文件描述符是最小的编号4

3.因为文件描述符的个数有限,所以在不适用的情况下,需要关闭

4.查看中的文件描述符的个数函数

三.特殊的文件描述符

stdin--->0

stdout--->1

stderr--->2

四.文件io函数

  • open

功能:打开文件

  • umask

1.什么是umask

umask是文件权掩码

2.查看文件权限掩码umask

        umask

3.修改文件权限掩码

        1.shell指令(只对当前终端有效)

                umask 修改的值 ---->umask 0

        2.使用函数实现修改文件权限掩码(只对当前终端有效)

  • close

功能:通过文件描述符关闭文件

  • write

功能:把数据转换为二进制文件,写入到文件中,在文件中以字符的形式展示

  • read

功能:根据文件描述符实现文件读取

  • lseek

功能:文件指针的偏移(修改光标所在位置)

五.获取文件信息

  • stat

功能:获取文件信息(文件类型 文件权限 硬链接数, 用户名 文件所属组, 时间) 不可以获取软链接文件信息,可以使用lstat函数

  • 获取文件所属用户 getpwuid

功能:根据用户id获取用户对应的信息

  • 获取文件所属组名getgrgid

功能:根据组id,获取组对应的信息

  • 获取文件类型和权限

文件类型是由st_mode的高4位决定

权限是由st_mode的第9位决定的

        man 7 inode

六.目录相关函数

  •  opendir

    功能:打开指定路径下目录

  • closedir

    功能:关闭目录流指针

  • readdir

    功能:读取目录对应的信息

七.练习

  •  使用文件IO读取图片 文件大小、文件偏移量,宽度,高度
#include <head1.h>
int main(int argc, const char *argv[])
{int fp=open("xiaoxin.bmp",O_RDONLY);if(fp==-1){PRINT_ERROR("fopen error");return-1;}int bmp_size=0,bmp_width=0,bmp_height=0;lseek(fp,2,SEEK_SET);read(fp,&bmp_size,sizeof(int));printf("图片的大小为:%d字节\n",bmp_size);lseek(fp,18,SEEK_SET);read(fp,&bmp_width,4);read(fp,&bmp_height,4);                                   printf("图像的宽高为:%d * %d\n",bmp_width,bmp_height);close(fp);return 0;
}

运行结果:

2.向一个程序中输入文件名,判断指定目录下是否有这个文件,如果有这个文件,将这个文件的属性信息输出。如果不存在输出不存在即可。

#include <head1.h>
int main(int argc, const char *argv[])
{if (argc != 3) {fprintf(stderr, "使用方法: %s <目录名> <文件名>\n", argv[0]);exit(EXIT_FAILURE);}const char *dir_name = argv[1];const char *file_name = argv[2];DIR *dir = opendir(dir_name);if (dir == NULL) {PRINT_ERROR("无法打开目录");}struct dirent *entry;struct stat file_stat;char file_path[1024];int found = 0;while ((entry = readdir(dir)) != NULL) {if (strcmp(entry->d_name, file_name) == 0) {snprintf(file_path, sizeof(file_path), "%s/%s", dir_name, file_name);if (stat(file_path, &file_stat) == -1) {PRINT_ERROR("获取文件信息失败");}printf("文件存在,属性信息如下:\n");printf("文件路径: %s\n", file_path);printf("文件大小: %ld 字节\n", file_stat.st_size);printf("文件权限: %o\n", file_stat.st_mode & 0777);printf("文件硬链接数: %ld\n", file_stat.st_nlink);struct tm *tm_info = localtime(&file_stat.st_mtime);if (tm_info == NULL){PRINT_ERROR("localtime error");}printf("最后修改的时间:%d-%d-%d %d:%d:%d\n",tm_info->tm_year+1900,tm_info->tm_mon+1,tm_info->tm_mday,tm_info->tm_hour,tm_info->tm_min,tm_info->tm_sec);found = 1;break;}}closedir(dir);if (!found) {printf("文件不存在\n");}return 0;
}

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

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

相关文章

深入探索WebGL:解锁网页3D图形的无限可能

深入探索WebGL&#xff1a;解锁网页3D图形的无限可能 引言 。WebGL&#xff0c;作为这一变革中的重要技术&#xff0c;正以其强大的功能和广泛的应用前景&#xff0c;吸引着越来越多的开发者和设计师的关注。本文将深入剖析WebGL的核心原理、关键技术、实践应用&#xff0c;并…

从开发和对抗的角度思考web网页中的接口逆向

如何从开发和对抗的角度去思考web网页中的接口逆向。 文章目录 前言1.从开发和对抗的角度思考接口逆向1.1 什么是接口逆向1.2 开发的角度思考如何开发策略1.3 对抗的角度思考遇到的问题1.4 正常情况下开发者如何防护1.5 正常情况攻击者如何做&#xff1f;1.6 对抗中的胜者 2.某…

C++24--右值引用C++11新特性

目录 1.C11简介 2.统一的列表初始化 2.1{}初始化 2.2std::initializer_list 3.声明 3.1auto 3.2decltype 3.3nullptr 4.范围for循环 5.智能指针 6.右值引用和移动语义 6.1左值引用和右值引用 6.2左值引用与右值引用比较 6.3右值引用使用场景和意义 6.4右值引用引…

Android ChatOn-v1.66.536-598-[构建于ChatGPT和GPT-4o之上]

ChatOn 链接&#xff1a;https://pan.xunlei.com/s/VOKYnq-i3C83CK-HJ1gfLf4gA1?pwdwzwc# 添加了最大无限积分 删除了所有调试信息 语言&#xff1a;全语言支持

Java高频面试之集合-03

hello啊&#xff0c;各位观众姥爷们&#xff01;&#xff01;&#xff01;本baby今天来报道了&#xff01;哈哈哈哈哈嗝&#x1f436; 面试官&#xff1a;说说ArrayList和LinkedList的区别 ArrayList 与 LinkedList 的详细对比 一、底层数据结构 特性ArrayListLinkedList存…

华为hcie证书有什么作用?

新盟教育 专注华为认证培训十余年 为你提供认证一线资讯&#xff01; 在当今数字化飞速发展的时代&#xff0c;ICT行业对专业人才的需求日益增长。华为HCIE证书作为华为认证体系中的最高级别认证&#xff0c;无疑是众多IT从业者追求的目标。那么&#xff0c;华为HCIE证书到底有…

通过微步API接口对单个IP进行查询

import requests import json# 微步API的URL和你的API密钥 API_URL "https://api.threatbook.cn/v3/ip/query" API_KEY "***" # 替换为你的微步API密钥 def query_threatbook(ip):"""查询微步API接口&#xff0c;判断IP是否为可疑"…

Redis|集群 Cluster

文章目录 是什么能干嘛集群算法-分片-槽位slotredis集群的槽位slotredis集群的分片分片槽位的优势slot槽位映射——业界的3种解决方案小厂&#xff1a;哈希取余分区中厂&#xff1a;一致性哈希算法分区大厂&#xff1a;哈希槽分区 面试题&#xff1a;为什么 Redis 集群的最大槽…

城市地质安全专题连载⑧ | 强化工程地质安全保障力度,为工程项目全栈护航

作者 | 徐海洋、孙美琴 在城市化进程日益加速的今天&#xff0c;城市地质安全问题日益凸显&#xff0c;成为制约城市可持续发展的关键因素之一。从隧道掘进中的突发灾害&#xff0c;到高层建筑地基的稳定性挑战&#xff0c;再到城市地下空间的开发利用风险&#xff0c;地质安全…

FFMPEG利用H264+AAC合成TS文件

本次的DEMO是利用FFMPEG框架把H264文件和AAC文件合并成一个TS文件。这个DEMO很重要&#xff0c;因为在后面的推流项目中用到了这方面的技术。所以&#xff0c;大家最好把这个项目好好了解。 下面这个是流程图 从这个图我们能看出来&#xff0c;在main函数中我们主要做了这几步&…

sqli-lab靶场学习(七)——Less23-25(关键字被过滤、二次注入)

前言 之前的每一关&#xff0c;我们都是在末尾加上注释符&#xff0c;屏蔽后面的语句&#xff0c;这样我们只要闭合了区间之后&#xff0c;差不多就是为所欲为的状态。但如果注释符不生效的情况下&#xff0c;又该如何呢&#xff1f; Less23&#xff08;注释符被过滤&#xff…

Self-Supervised Prompt Optimization

论文&#xff1a;[2502.06855] Self-Supervised Prompt Optimization 仓库&#xff1a;GitHub - Airmomo/SPO: SPO | Self-Supervised Prompt Optimization 自监督提示优化&#xff08;SPO&#xff09; 创新点 成对比较评估 输出指导优化 全文介绍 背景 随着大语言模型…

AI-Ollama本地大语言模型运行框架与Ollama javascript接入

1.Ollama Ollama 是一个开源的大型语言模型&#xff08;LLM&#xff09;平台&#xff0c;旨在让用户能够轻松地在本地运行、管理和与大型语言模型进行交互。 Ollama 提供了一个简单的方式来加载和使用各种预训练的语言模型&#xff0c;支持文本生成、翻译、代码编写、问答等多种…

分布式多卡训练(DDP)踩坑

多卡训练最近在跑yolov10版本的RT-DETR&#xff0c;用来进行目标检测。 单卡训练语句&#xff08;正常运行&#xff09;&#xff1a; python main.py多卡训练语句&#xff1a; 需要通过torch.distributed.launch来启动&#xff0c;一般是单节点&#xff0c;其中CUDA_VISIBLE…

LLM大型语言模型(一)

1. 什么是 LLM&#xff1f; LLM&#xff08;大型语言模型&#xff09;是一种神经网络&#xff0c;专门用于理解、生成并对人类文本作出响应。这些模型是深度神经网络&#xff0c;通常训练于海量文本数据上&#xff0c;有时甚至覆盖了整个互联网的公开文本。 LLM 中的 “大” …

蓝桥杯备考:动态规划dp入门题目之数字三角形

依然是按照动态规划dp的顺序来 step1&#xff1a;定义状态表示 f[i][j]表示的是到,j这个坐标的结点时的最大权值 step2: 定义状态方程 i,j坐标可能是从i-1 j-1 到i,j 也可能是从i-1 j到 i,j 所以状态方程应该是 f[i][j] max(f[i-1][j-1],f[i-1][j]) a[i][j] step3:初始化…

HarmonyOS NEXT开发进阶(十一):应用层架构介绍

文章目录 一、前言二、应用与应用程序包三、应用的多Module设计机制四、 Module类型五、Stage模型应用程序包结构六、拓展阅读 一、前言 在应用模型章节&#xff0c;可以看到主推的Stage模型中&#xff0c;多个应用组件共享同一个ArkTS引擎实例&#xff1b;应用组件之间可以方…

deepseek+mermaid【自动生成流程图】

成果&#xff1a; 第一步打开deepseek官网(或百度版&#xff08;更快一点&#xff09;)&#xff1a; 百度AI搜索 - 办公学习一站解决 第二步&#xff0c;生成对应的Mermaid流程图&#xff1a; 丢给deepseek代码&#xff0c;或题目要求 生成mermaid代码 第三步将代码复制到me…

Solon AI —— RAG

说明 当前大模型与外部打交道的方式有两种&#xff0c;一种是 Prompt&#xff0c;一种是 Fuction Call。在 Prompt 方面&#xff0c;应用系统可以通过 Prompt 模版和补充上下文的方式&#xff0c;调整用户输入的提示语&#xff0c;使得大模型生成的回答更加准确。 RAG RAG &…

STM32——USART—串口发送

目录 一&#xff1a;USART简介 二&#xff1a;初始化USART 1.开启时钟 2.代码 三&#xff1a;USART发送数据 1.USART发送数据函数 2.获取标志位的状态 3.代码 4.在main.c内调用 5.串口调试 1.串口选择要与设备管理器中的端口保持一致 2.波特率、停止位等要与前面…