系统编程之文件IO(二)——文件系统及文件描述符

简介: 系统编程之文件IO(二)——文件系统及文件描述符

一、文件编程


文件io:一切皆文件!(VFS)虚拟文件系统

节省成本,把所有数据抽象成文件、有效管理:文件系统

-普通文件:C库函数、API(系统调用)、d目录文件、c/b设备文件(fread、fwrite)、l链接文件(p管道文件、s套接字、f堆栈文件)


#include <stdio.h>
int main()
{
  FILE *fp = fopen("/dev/input/mouse0");
  int num;
  fread(&num, 1, sizeof(num),fp);
  printf("num = %d\n",num);
  return 0;
}


用户空间:fopen

C库:实现fopen


(
  API;
)


内核空间,访问文件


二、文件IO


初级IO:系统调用API

标准IO:库函数

高级IO:高级API


2.1 文件IO重要性


网络、进程、通信都需要文件IO


2.2 根目录


bin、sbin

dev

etc

lib

usr/lib、usr/include、usr/sbin、usr/bin

home

root

boot

proc

sys


2.3 文件描述符


相当于,每生成一个文件,就有一个id、操作这个id就是操作这个文件

类似:学号

文件ID:


动态分配:只要当操作这个文件时,系统才会给你分配文件描述符

非负整数:从3编号开始、0,1,2三个文件描述符有其他作用(stdin、stdout、stderr)

100多个API,不看demo背下来


相关文章
|
12天前
|
数据库
同步IO模型是一种常见的编程模型
【10月更文挑战第5天】同步IO模型是一种常见的编程模型
12 2
|
16天前
|
搜索推荐 索引
【文件IO】实现:查找文件并删除、文件复制、递归遍历目录查找文件
【文件IO】实现:查找文件并删除、文件复制、递归遍历目录查找文件
29 2
|
16天前
|
编解码 Java 程序员
【文件IO】文件内容操作
【文件IO】文件内容操作
34 2
|
16天前
|
存储 Java API
【文件IO】文件系统操作
【文件IO】文件系统操作
36 1
|
1月前
|
Java 大数据 API
Java 流(Stream)、文件(File)和IO的区别
Java中的流(Stream)、文件(File)和输入/输出(I/O)是处理数据的关键概念。`File`类用于基本文件操作,如创建、删除和检查文件;流则提供了数据读写的抽象机制,适用于文件、内存和网络等多种数据源;I/O涵盖更广泛的输入输出操作,包括文件I/O、网络通信等,并支持异常处理和缓冲等功能。实际开发中,这三者常结合使用,以实现高效的数据处理。例如,`File`用于管理文件路径,`Stream`用于读写数据,I/O则处理复杂的输入输出需求。
|
1月前
|
网络协议 Java Linux
高并发编程必备知识IO多路复用技术select,poll讲解
高并发编程必备知识IO多路复用技术select,poll讲解
|
17天前
|
存储 Java 程序员
【Java】文件IO
【Java】文件IO
30 0
|
1月前
|
Linux C语言
C语言 文件IO (系统调用)
本文介绍了Linux系统调用中的文件I/O操作,包括文件描述符、`open`、`read`、`write`、`lseek`、`close`、`dup`、`dup2`等函数,以及如何获取文件属性信息(`stat`)、用户信息(`getpwuid`)和组信息(`getgrgid`)。此外还介绍了目录操作函数如`opendir`、`readdir`、`rewinddir`和`closedir`,并提供了相关示例代码。系统调用直接与内核交互,没有缓冲机制,效率相对较低,但实时性更高。
|
2月前
|
存储 Java
【IO面试题 四】、介绍一下Java的序列化与反序列化
Java的序列化与反序列化允许对象通过实现Serializable接口转换成字节序列并存储或传输,之后可以通过ObjectInputStream和ObjectOutputStream的方法将这些字节序列恢复成对象。
|
3月前
|
Java 大数据
解析Java中的NIO与传统IO的区别与应用
解析Java中的NIO与传统IO的区别与应用