文件IO(IO编程)

article/2025/9/22 7:42:16

一、文件IO(IO编程)
系统IO:和系统有关的IO接口函数
标准IO: 标准库里面的IO接口函数 #include <stdio.h>
目录操作:操作目录相关的IO接口函数
LCD屏的操作:刷图
TS(touch screen)触摸屏的操作:点击、滑动

二、文件
1.一切皆文件(重点)
 一切皆文件,对于linux来说,所有的硬件设备都是文件。比如说你要去操作一个LCD的
硬件屏幕,对于我们应用开发者来说,我们不需要去了解它的寄存器,我们只需要找到
LCd所对应的哪一个文件就可以操作LCD

2.linux系统是怎样去管理它的文件
 每一种硬件都对应着一种文件类型,那这么多的硬件对应这各种各样的文件类型;在linux如何
对他们进行管理;所有的硬件文件类型都由VFS来管理;
说明:
有了VFS来同统一管理所有的硬件类型,就可以实现不同格式文件类型之间的内容的交互;
比如你把U盘里面的内容拷贝到电脑的硬盘里面,就是通过VFS来控制协调。

 

3.在linux中有哪些文件类型7种(重点)
'-':普通文件
'd' :目录文件
'l' :链接文件
'p':管道文件 (系统编程)
's':套接字文件 (网络编程)
'c':字符设备文件
'b':块设备文件

4.文件类型的其它分类
普通文件类型:txt记事本文件、jpg图片文件、tar.gz压缩文件等等
看不见的文件:proc目录下的系统文件,这里面的文件信息是系统文件信息,实时变化,没有权限去修改它
设备文件(硬件文件):这里面的每一个文件描述的都是一个硬件 /dev目录下

三、怎么样来操作文件
系统IO:open、close、read、write、lseek
标准IO:fopen、fclose、fread、fwrite、fseek

四、系统IO---man手册
1.使用man手册来学习系统IO函数
       1   Executable programs or shell commands  用来查看普通命令
       2   System calls (functions provided by the kernel)  系统调用接口(系统IO)
       3   Library calls (functions within program libraries) 库调用接口(标准IO)
       4   Special files (usually found in /dev)
       5   File formats and conventions eg /etc/passwd
       6   Games
       7   Miscellaneous  (including  macro  packages  and  conventions), e.g.
           man(7), groff(7)
       8   System administration commands (usually only for root)
       9   Kernel routines [Non standard]

2.使用方法(3要素)
1)第一步找到它的头文件和函数原型
SYNOPSIS
       #include <sys/types.h>
       #include <sys/stat.h>
       #include <fcntl.h>

       int open(const char *pathname, int flags);
       int open(const char *pathname, int flags, mode_t mode);

2)第二步看DESCRIPTION描述的第一段话
DESCRIPTION
       Given a pathname for a file, open() returns a file descriptor, a small,
(重点找下划线的单词--参数)

3)第三步查看它的返回值
RETURN VALUE
       open(), openat(), and creat() return the new file descriptor, or -1  if

五、系统IO
1.open
       #include <sys/types.h>
       #include <sys/stat.h>
       #include <fcntl.h>

       int open(const char *pathname, int flags);
参数:
    pathname: 文件路径名 (字符指针=字符串)
    flags:标志量
    O_RDONLY, 只读
    O_WRONLY, 只写
    O_RDWR.可读可写
    O_CREAT, If the file does not exist, it will be created如果没有自动创建
返回值:
    成功:文件描述符
    失败:-1

 

练习1:
 使用open函数自动创建一个2.txt文件

2.文件描述符
练习2:
 死循环open函数,打印出文件描述符fd的值,观察它的现象
while(1)
{
  fd = open();
  printf("fd=%d\n",fd);    
}
现象:
1)缺了3个文件描述符的值 0 1 2
2)最大的文件描述符的值是1023

总结:
1)文件描述符的个数只有1024个
2)有3个文件描述符被系统占用 0 1 2
3)开发者创建的文件描述符的值是从3开始的
gec@ubuntu:/mnt/hgfs/GZ2264/6_文件IO/01/code$ vi /usr/include/unistd.h 
 212 /* Standard file descriptors.  */
 213 #define STDIN_FILENO    0   /* Standard input.  */   -->标准输入 键盘
 214 #define STDOUT_FILENO   1   /* Standard output.  */   -->标准输出 屏幕
 215 #define STDERR_FILENO   2   /* Standard error output.  */ -->标准出错 屏幕

练习3:
 当前路径下有3个文件1.txt 2.txt 3.txt
fd1 = open("1.txt",O_RDWR) //fd1 = 3
fd2 = open("2.txt",O_RDWR) //fd2 = 4
fd3 = open("3.txt",O_RDWR) //fd3 = 5

2.close
       #include <unistd.h>

       int close(int fd);
参数:
    fd:文件描述符
返回值:
    成功:0
    失败:-1
说明:
 如果重复关闭一个描述符,它会失败。     

练习4:
 当前路径下有3个文件1.txt 2.txt 3.txt
fd1 = open("1.txt",O_RDWR) //fd1 = 3
fd2 = open("2.txt",O_RDWR) //fd2 = 4
fd3 = open("3.txt",O_RDWR) //fd3 = 5
close(fd1);
fd4 = open("1.txt",O_RDWR) //fd4 = 3
fd5 = open("2.txt",O_RDWR) //fd5 = 6
close(fd2);
close(fd3);
fd6 = open("3.txt",O_RDWR) //fd6 = 4
fd7 = open("3.txt",O_RDWR) //fd7 = 5
总结:
 文件描述符的值是从数组里面从小到大按照顺序拿,如果没有就往往后面找。

3.read
SYNOPSIS
       #include <unistd.h>

       ssize_t read(int fd, void *buf, size_t count);
参数:
    fd:文件描述符
    buf:你想要读取的buffer
    count:你想要读取的字节数
返回值:
    成功:> 0返回实际读到的字节数
             =0(zero indicates end offile) 如果是0预示着文件尾    
    失败:-1(<0)
结论:
 读数据的时候,返回值是你实际读到的字节数;并不是想读多少就读多少。当你想读的字节数小于文件里面实际有的字节数的时候,此时count的值和返回值是一样的;当你想读的字节数大于文件里面实际有的字节数的时候,返回值就是文件里面的实际的字节数。
 


http://chatgpt.dhexx.cn/article/rW19yK64.shtml

相关文章

I/O编程

一、标准IO 1.1、概述 标准IO 是ANSI C提供的函数接口&#xff0c;在文件IO的基础上封装出来的。任何兼容标准C库的操作系统都可以使用接口&#xff0c;具有更好的移植性。标准IO在执行时也会用到系统调用&#xff0c;为了增加内核的工作效率&#xff0c;减少资源浪费&#…

小米平板2装win10(附驱动)

前段时间在折腾着怎么给米pad2装win10&#xff0c;结果驱动什么的折腾了好久。 给米pad2装win10&#xff0c;其实就和给普通的电脑装win10差不多的步骤。 第一步&#xff0c;制作U盘启动器。工具什么的就用官方的winPE就好&#xff0c;iso就随意吧。 第二步&#xff0c;给米…

小米笔记本系统win10家庭版升级为企业版(专业版)

一.背景 新入职一家IT公司,由于公司领导层是小米粉,基本新入职的员工人手一本小米笔记本.小米笔记本默认自带的是家庭版的,由于之前公司很多人用的都是家庭版的,在某些极为特殊的软件开发情况下,家庭版的配置给开发带来了极大的困难,后来经过查资料验证企业版是不会出现这种情…

小米mix2s刷win11和android双系统

在给电脑安装系统的过程中&#xff0c;可能会因为各种原因出现windows无法安装的情况&#xff0c;我在给小米mix2s安装win11时发现出现了“计算机意外地重新启动或遇到错误&#xff0c;windows无法安装”的情况&#xff0c;下面就来教一下大家两种解决方法&#xff0c;希望可以…

小米air13.3一代的win10系统重装

仅作为记录&#xff0c;大佬请跳过 小米air的系统重装在进入bios之后&#xff0c;选择u盘启动时&#xff08;需要设置一个密码&#xff0c;然后关闭secure boot&#xff09;有点跟神船不一样&#xff0c;作为记录。 参考大佬博主文章传送门

Win10 IPv6 远程桌面连接(小米路由器)

前排广告&#xff1a;2021金三银四&#xff0c;字节跳动招人季&#xff0c;平均反馈时间仅1天&#xff01;选择覆盖达6大城市&#xff01;——2021年字节跳动飞书团队内推活动正式开启&#xff0c;岗位列表见&#xff1a;https://job.toutiao.com/s/eNtDcGu。除了这个投递连接外…

小米4A千兆刷OpenWrt_Win10

在Linux上试了一下&#xff0c;最终telnet 196.168.31.1失败&#xff0c;网上找了一些教程&#xff0c;改到win10下刷成功了。 1 先安装Pthon3 和pip3&#xff0c;然后pip3 install requests&#xff0c;不然会报错 2 win10开启telnet&#xff0c;方法简单自行百度&#xff1…

小米平板2可以装鸿蒙系统,详细教程!教你小米平板2轻松刷Win10

众所周知&#xff0c;小米平板2拥有MIUI和Windows 10两个版本&#xff0c;这两个版本在硬件上是一致的(除了机身存储空间不同)&#xff0c;所以理论上存在通刷的可能。 现在&#xff0c;有网友在MIUI论坛中共享了小米平板2刷Windows 10的教程&#xff0c;有兴趣的不妨一起来看看…

win10 下载

win10 下载 https://www.microsoft.com/zh-cn/software-download/windows10 Windows 10 2022 更新 l 版本 22H2 选择版本 以下 Windows 10 版本对于 Windows 10 家庭版和 Windows 10 专业版都有效。 如果您想验证下载数据的完整性和真实性&#xff0c;请按照以下步骤操作&…

计算机连接小米usb驱动,win10系统安装小米usb驱动的详细步骤

随着电脑的使用率越来越高&#xff0c;我们有时候可能会遇到对win10系统安装小米usb驱动进行设置&#xff0c;如果我们需要对win7系统安装小米usb驱动进行设置时&#xff0c;要怎么处理win10系统安装小米usb驱动的设置方法非常简单。 设置方法&#xff1a; 1、首先先下载小米驱…

win10 android 手机驱动下载,小米手机驱动win10驱动

小米手机usb驱动win10驱动是Win10系统专用的小米手机USB连接驱动&#xff0c;Win10电脑想要通过USB数据线与小米手机连接&#xff0c;必需安装这个驱动&#xff0c;从而可以使用电脑管理手机中的文件&#xff0c;以及进行线刷、解锁等操作&#xff0c;支持32位以及64位的Win10系…

【日常技巧】小米手机投屏至win10笔记本

最近需要多次实现自己手机与电脑的投屏&#xff0c;却又不想安装其他第三方软件&#xff0c;最终找到方法&#xff0c;做以下记录。 系统说明 手机&#xff1a;MIUI12.0.2稳定版 电脑&#xff1a;win10 前提条件 手机与电脑同处于同一wifi下 操作步骤 1.打开win10电脑投屏…

小米笔记本怎么恢复出厂的系统

买了台小米pro笔记本,中途自己重装了一次win10专业版,自己安装系统之后,自然很多电脑自带的软件和功能就没有了,比如Dolby,指纹解锁,正版的win10和office. 之前一直以为小米笔记本里面的软件都是预装在win10里面,只要有原厂的镜像就可以安装了,但是一直没找到.最近刚好系统又出…

小米笔记本pro15.6黑苹果+win10双系统/多系统

基本信息 配置,小米笔记本PRO 15.6 硬盘&#xff1a;杂牌 显卡&#xff1a;MX150/H610 CPU:i7-8550 简介&#xff1a;win10苹果双系统&#xff0c;双硬盘双系统&#xff0c;自带的pm981硬盘以前成功装过一次&#xff0c; 目前已知&#xff1a; MAC时间不同步&#xff08;…

小米pro安装win10系统

一.利用U盘做驱动盘 格式化u盘为NTFS格式官网下载https://www.microsoft.com/zh-cn/software-download/windows10点击立即下载工具 下载完成双击打开--->接受---->下一步---->为另一台电脑创建安装介质---->下一步--->下一步---->下一步---->出现所选U盘…

win10系统小米妙享中心,在手机可搜索到电脑,与之跨屏协作

在体验了小米妙享中心之后&#xff0c;发现非小米笔记本每次投屏不能直接在手机上直接投送到电脑屏幕&#xff0c;而只能在电脑打开手机画面&#xff0c;进行对手机操作&#xff0c;我们进行电脑伪装将我们的电脑变成小米笔记本&#xff0c;之后就可以在小米妙享中心发现我的设…

小米笔记本重装win10系统教程

U盘装机大师一键重装小米笔记本win10系统 小米笔记本自打推出以来&#xff0c;一直以非常高的性价比而深受大众的喜爱&#xff0c;加上其简约的外观&#xff0c;无论是价格还是外型都给了用户购买它的理由&#xff0c;对于电脑的话&#xff0c;重装系统是不可避免的事&#xf…

小米笔记本安装Win 10历程

今天要给小米笔记本&#xff08;128G 固态硬盘&#xff09;重新安装Win 10系统&#xff0c;本想着通过自带的恢复方式进行恢复 但是&#xff0c;通过此种方法进行还原后&#xff0c;电脑的 “设置” 点击不了了。无奈之下&#xff0c;只能通过U盘重新安装系统。 1. 通过U盘做系…

pc端和移动端自适应, 做响应式网页

一套代码能够兼容适配不同的屏幕设备&#xff0c;内容不变布局效果变了&#xff0c;这样的网页就是响应式网页 响应式和自适应的区别&#xff1a; 响应式是一套代码通过检测视口分辨率展示不同的页面布局效果样式&#xff0c;是指据屏幕的大小自动的调整页面的展现方式&#…

vue同一项目搭建PC端和移动端

新建一个vue项目 我们执行npm run serve 启动项目&#xff0c;在浏览器输入&#xff1a;“localhost:8080”&#xff1b;正常的话然后我们会看到项目的启动页 2.把目录结构改为下图所示 3.更改路由(router)的文件 核心代码 import Vue from ‘vue’ import VueRouter from ‘…