71-Linux文件操作的系统调用

这篇博客详细介绍了Linux下文件操作的四个核心系统调用:open(), read(), write(), close(),并讨论了C语言中的fopen()与它们的关系。文章指出Linux不区分文本和二进制文件,强调系统调用在访问硬件和内核中的关键作用,并提供了代码示例展示文件的读写操作。" 102252378,8857485,Vue使用Vant UI的Dialog组件详解,"['前端开发', 'Vue', 'UI框架', ' vant', '组件库']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:知识点

1.文件操作的系统调用,他们的实现在内核(操作系统)中

①open() ②read() ③write() ④close()

2.C语言中的fopen()是一个库函数,他调用的是open(底层的系统调用)fopen是靠open实现的,无论上层分了多少与文件有关的函数,从底层来讲就只有4个与文件有关的函数(open read write close)

3.Linux不分文本文件和二进制文件,在Linux上没有什么区别,只有windows才分

4.最底层是计算机硬件,硬件之上是操作系统(内核),用户和内核z之间有系统调用,通过系统调用可以进入内核,系统调用上面是库函数

在这里插入图片描述

5.printf函数要往屏幕(硬件)上打印信息,要通过内核去打印,所以需要通过系统调用进入内核空间执行内核代码来访问硬件,而我们自己可以实现的库函数(比如strlen),不需要其他的底层的支持,也就不需要通过系统调用进入内核

像strlen这种我们自己可以实现的库函数就不需要调用系统调用,库函数有可能调用系统调用,也有可能不调用系统调用,系统调用是进入内核的一个桥梁,系统调用比库函数更底层一点

6.通过系统调用获取进程的id号,要访问内核中的一些数据结构,访问底层的硬件,就必须要通过系统调用来完成

7.什么是文件:文件主要有两大操作(往里面写数据还有从里面读数据),文件就是存放数据的仓库,如图片,电影,歌曲都是文件,里面都保存了数据

8.内存的特点就是断电不保护,一断电,保存的数据就消失了,硬盘,断电保护,可以长久的保存数据

9.硬盘有固态硬盘(速度快),机械硬盘(速度慢,容易坏)

10.文件包含在#include <fcntl.h>头文件中

11.读文件通过返回值是否为0判断是否读完

12.操作系统:管理计算机上的软硬件资源,为用户提供一个交互的接口。

(1) 串行处理 (2) 批处理 (3) 多道程序设计 (4) 分时系统

13.对文件的操作就分为三个阶段①打开文件②读或者写③关闭文件

14.打开文件open,返回的是文件描述符

15.ssize_t:有符号整数 size_t:无符号整数

16 int open(const char* pathname,int flags); 路径名称+方式(读还是写)+权限

例如:fd=open(“file.txt”,O_WRONLY|O_CREAT,0600);意思说创建(因为有O_CREAT)了一个名字叫file.txt的文件,方式是只写,权限是仅自己

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

例如:fd=open(“file.txt”,O_WRONLY,0600);意思是说打开file.txt文件,方式是只写,权限仅自己

只读:O_RDONLY 只写:O_WRONLY 可读可写O_RDWR 创建O_CREAT

17.读取文件read

ssize_t read(int fd,void *buf,size_t count);

例如:read(fd,buf,5);意思是说读取fd(文件描述符)的内容,读到buf中,读5个数据

18.写文件write

ssize_t write(int fd,const void *buf,size_t count);

例如:write(fd,“Hello”,5);意思是说往fd中写,写的内容是buf里面的内容,写5个数据

19.关闭文件close

int close(int fd);

close(fd);意思是说关闭fd文件

二:代码演示:

1.写文件:

①fd = open(“file.txt” ,O_WRONLY|O_CREAT , 0600);

创建文件,名字叫file.txt,方式是只写,权限是自己(6),其他人(0),同组人(0)

#include <stdio.h>
#include <stdlib.h>
#include
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值