【Linux基础(一)】设备和文件IO

学习分享

  • 1、Linux中的设备管理
    • 1.1、设备管理的特点
    • 1.2、设备分类
    • 1.3、设备工作原理
    • 1.4、Linux设备操作
    • 1.5、系统调用和系统API等区别
  • 2、文件IO
    • 2.1、C库的文件操作
    • 2.2、文件描述符
    • 2.3、特殊文件描述符
    • 2.4、系统调用
      • 2.4.1、open系统调用4-1
      • 2.4.2、open系统调用4-2
      • 2.4.3、write系统调用
      • 2.4.4、read系统调用
      • 2.4.5、文件的随机读写
      • 2.4.6、lseek系统调用6-1
      • 2.4.6、lseek系统调用6-2
      • 2.4.7、mkdir系统调用
      • 2.4.8、rmdir系统调用
    • 2.5、打开文件的方式
    • 2.6、访问权限
    • 2.7、文件打开示例
    • 2.8、关闭文件close

1、Linux中的设备管理

Linux采用文件系统管理硬件设备,所有的设备都看成是特殊的文件,从而将硬件设备的特性及管理细节对用户隐藏起来,实现设备无关性。

在这里插入图片描述

1.1、设备管理的特点

每个设备都对应文件系统中的一个索引节点,都有一个文件名。
应用程序通常可以通过系统调用open()打开设备文件,建立起与目标设备的连接。
对设备的使用类似于对文件的存取。
设备驱动程序都是系统内核的一部分,它们必须为系统内核或者它们的子系统提供一个标准的接口。
设备驱动程序使用一些标准的内核服务,如内存分配等。

1.2、设备分类

在这里插入图片描述

1.3、设备工作原理

在这里插入图片描述

1.4、Linux设备操作

在这里插入图片描述

1.5、系统调用和系统API等区别

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2、文件IO

2.1、C库的文件操作

在这里插入图片描述

2.2、文件描述符

在这里插入图片描述

2.3、特殊文件描述符

在这里插入图片描述

2.4、系统调用

2.4.1、open系统调用4-1

在这里插入图片描述

2.4.2、open系统调用4-2

在这里插入图片描述

2.4.3、write系统调用

在这里插入图片描述

#include <stdio.h>
#include <fcntl.h>
#include <sys/stat.h>
void main()int outfd = 0, r_size = 0;char buf[ ] = “Hello world!!;outfd = open(“first”,O_WONLY | O_TRUNC | O_CREAT,S_IRWXU);if(outfd>0){r_size = write(outfd,buf,sizeof(buf));if(r_size>0){printf(“write data to file success”);}	close(outfd);		}
}

2.4.4、read系统调用

在这里插入图片描述

2.4.5、文件的随机读写

在这里插入图片描述

2.4.6、lseek系统调用6-1

在这里插入图片描述

2.4.6、lseek系统调用6-2

在这里插入图片描述

2.4.7、mkdir系统调用

在这里插入图片描述

2.4.8、rmdir系统调用

在这里插入图片描述

2.5、打开文件的方式

在这里插入图片描述

2.6、访问权限

在这里插入图片描述

2.7、文件打开示例

#include <fcntl.h>
#include <sys/stat.h>
#include <stdio.h>
#include <unistd.h>
void main()
{int outfd = 0;outfd = open(“myfile",O_WRONLY|O_CREAT|O_TRUNC,S_IRWXU|S_IRGRP);if(outfd==-1){perror(“fail to open file\n”);exit(-1);}else{perror(“success to open file\n”); }close(outfd); //关闭文件描述符
}

2.8、关闭文件close

在这里插入图片描述

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

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

相关文章

爬虫实战——伯克利新闻【内附超详细教程,你上你也行】

文章目录 发现宝藏一、 目标二、简单分析网页1. 寻找所有新闻2. 分析模块、版面和文章 三、爬取新闻1. 爬取模块2. 爬取版面3. 爬取文章 四、完整代码五、效果展示 发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不…

2023年扫地机器人行业分析报告(2024年扫地机器人行业未来趋势分析)

当前&#xff0c;随着人们生活水平的提高&#xff0c;扫地机器人因为操作简单、使用方便而越来越多地走入了人们的生活&#xff0c;成为清洁电器中的重要一员&#xff0c;深受消费者欢迎。 伴随科技水平的进步&#xff0c;当前的扫地机器人已经具备了高度智能化的功能&#xf…

C++_位图

目录 1、位图的使用 2、位图实现 3、位图与哈希表的区别 4、位图的应用 结语 前言&#xff1a; 位图采用的是哈希表的思想&#xff0c;哈希表的映射层面是在字节上&#xff0c;而位图的映射层面就是在bit位上。由于bit位所能展现的信息无非只有‘1’和‘0’&#xff0c;所…

【Apple Vision Pro应用源码】Vision Pro吸尘器项目源代码

超级有趣Vision Pro 应用 吸尘器项目 这是一个非常有趣的 Vision Pro项目&#xff0c;会让孩子们爱上打扫卫生。 在这里我展示了如何使用 ARKit&#xff1a;头部跟踪、手部跟踪、场景理解加载和播放声音进程冲突使用 MTLBuffers 处理底层网格数据 项目源代码&#xff1a;Git…

动态规划(算法竞赛、蓝桥杯)--状态压缩DP蒙德里安的梦想

1、B站视频链接&#xff1a;E31 状态压缩DP 蒙德里安的梦想_哔哩哔哩_bilibili #include <bits/stdc.h> using namespace std; const int N12,M1<<N; bool st[N];//st[i]存储合并列的状态i是否合法 long long f[N][M];//f[i][j]表示摆放第i列&#xff0c;状态为…

java-ssm-jsp-大学社团管理系统

java-ssm-jsp-大学社团管理系统 获取源码——》公主号&#xff1a;计算机专业毕设大全

PSINS工具箱笔记——函数定义

绘图函数&#xff1a; 时间进度条&#xff1a; timebar&#xff08;用起来简单&#xff09; 姿态转换&#xff1a; 欧拉角、姿态矩阵、等效旋转矩阵、姿态四元数、运载火箭使用的欧拉角之间的转换。 轨迹生成&#xff1a; seg trjsegment(seg, segtype, lasting, w, a, var…

centos上部署k8s

环境准备 四台Linux服务器 主机名 IP 角色 k8s-master-94 192.168.0.94 master k8s-node1-95 192.168.0.95 node1 k8s-node2-96 192.168.0.96 node2 habor 192.168.0.77 镜像仓库 三台机器均执行以下命令&#xff1a; 查看centos版本 [rootlocalhost Work]# cat /…

武汉灰京文化:游戏市场推广与用户增长的成功典范

作为游戏行业的明星企业&#xff0c;武汉灰京文化在市场推广和用户增长方面的成功经验备受瞩目。他们以创造性和独特性的市场营销策略&#xff0c;成功吸引了大量用户。这不仅提高了其游戏的知名度&#xff0c;还为公司带来了持续的增长。这一成功模式不仅对公司自身有益&#…

PaddlePaddle----基于paddlehub的OCR识别

Paddlehub介绍 PaddleHub是一个基于PaddlePaddle深度学习框架开发的预训练模型库和工具集&#xff0c;提供了丰富的功能和模型&#xff0c;包括但不限于以下几种&#xff1a; 1.文本相关功能&#xff1a;包括文本分类、情感分析、文本生成、文本相似度计算等预训练模型和工具。…

政安晨【示例演绎虚拟世界开发】(六):从制作一个对战小游戏开始(Cocos Creator 《击败老大》)(第三段)

在上一篇文章中&#xff0c;我们已经将游戏的场景基本搭建完毕&#xff0c;接下来我们就可以为游戏编写代码并实现相关的核心逻辑了。 政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: AI虚拟世界大讲堂 希望政安晨的博客能够对您有所裨益&a…

基于NB-IoT的西红柿基地温湿度监测系统

总体硬件架构 在西红柿种植园内&#xff0c;我们为每株作物分配RFID标签&#xff0c;以便在每次照顾作物后记录其生长状况、施肥和灌溉等信息。这些数据将上传至云端&#xff0c;便于用户在线实时监控作物生长情况。 为了确保温湿度的精确控制&#xff0c;我们在作物棚内每隔3米…

appium2的一些配置

appium-desktop不再维护之后&#xff0c;需要使用appium2。 1、安装appium2 命令行输入npm i -g appium。安装之后输入appium或者appium-server即可启动appium 2、安装安卓/ios的驱动 安卓&#xff1a;appium driver install uiautomator2 iOS&#xff1a;appium driver i…

算法沉淀——贪心算法一(leetcode真题剖析)

算法沉淀——贪心算法一 01.柠檬水找零02.将数组和减半的最少操作次数03.最大数04.摆动序列 贪心算法&#xff08;Greedy Algorithm&#xff09;是一种基于贪心策略的优化算法&#xff0c;它通常用于求解最优化问题&#xff0c;每一步都选择当前状态下的最优解&#xff0c;以期…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:TapGesture)

支持单击、双击和多次点击事件的识别。 说明&#xff1a; 从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 接口 TapGesture(value?: { count?: number, fingers?: number }) 参数&#xff1a; 参数名称参数类型必填参…

sql多表运用 12.3

肖SIR__数据库之多表运用__12.3 数据库之多表运用 CREATE table dept(dept1 VARCHAR(6),dept_name VARCHAR(20)) default charsetutf8; INSERT into dept VALUES (101,财务); INSERT into dept VALUES (102,销售); INSERT into dept VALUES (103,IT技术); INSERT into dep…

前端工具网站合集(持续更新)

综合类网站 那些免费的砖 统计推荐免费工具网站 那些免费的砖 - 优雅地白嫖各种免费资源 (thosefree.com)https://www.thosefree.com/ CSS样式网站 毒蘑菇-配色 CSS 配色&#xff0c;阴影网站 一个好用的配色网站! 毒蘑菇 - 配色 (dumogu.top)https://color.dumogu.top/ …

如何使用Minitab计算MSA数据

1.1 步骤一 将数据复制进Minitab数据区 1.2 步骤二 按图示选择 1.3 步骤三 按图示选择&#xff0c;测量数据那列根据自己填入的数据而定 1.4 数据 评价中的重要指标为可区分类别数&#xff08;通常需大于10&#xff09;&#xff0c;合计量具R&R&#xff08;通常需小于10&am…

alibabacloud学习笔记07(小滴课堂)

讲解Sentinel自定义异常降级-新旧版本差异 讲解新版Sentinel自定义异常数据开发实战 如果我们都使用原生的报错&#xff0c;我们就无法得到具体的报错信息。 所以我们要自定义异常返回的数据提示&#xff1a; 实现BlockExceptionHandler并且重写handle方法&#xff1a; 使用F…

Jupyter如何开启Debug调试功能

由于需要对算子做远程调试功能&#xff0c;需要在jupyter中开启远程断点调试功能&#xff0c;特此记录。 本文写作时用到的系统是Ubuntu22&#xff0c;Python的版本是3.8. 首先&#xff0c;创建虚拟环境。 python -m venv venv source venv/bin/activate接着&#xff0c;安装…