文件IO(一)

news2025/2/22 18:24:06

文件IO(一)

  • 文件IO
    • 文件的分类
    • 在文件IO下,文件分类
      • 按存储的内容分
      • 按照操作分
    • 标准IO和文件IO的区别
    • 系统调用和库函数的区别

文件IO

  • 把程序暂存在内存的数据,存储到本地外存上

文件的分类

在Linux系统下,文件共分为7类
- 普通文件
d 目录文件
p 管道文件
l 链接文件
b 块设备文件
c 字符设备文件
s 套接字(Socket)文件 跨主机之间的通信

在文件IO下,文件分类

按存储的内容分

文本文件:存储的是数据的阿斯克码(0~127),EOF(end of file,-1)
二进制文件:存储的是数据在内存上的原样存储
文本文件,在存储的时候,需要数据和阿斯玛转换,一般存储数据量比较大的数据,最终结果
二进制文件,一般存储中间变量

在这里插入图片描述
在这里插入图片描述

按照操作分

带缓冲区操作的文件:标准IO,内存上的缓冲区,库函数
不带缓冲区操作的文件:文件IO

在这里插入图片描述
在这里插入图片描述

标准IO和文件IO的区别

标准IO
1.标准IO由ANSI C标准定义, 库函数提供的
2.跨平台性,移植性较好
3.有缓冲区的操作,标准IO的效率比文件IO的效率高
4.一般以文件流指针作为操作依据
文件IO
1.由POSIX定义,操作系统提供的系统调用提供的
2.移植性差
3.效率较低
4.一般以文件描述符作为操作依据

在这里插入图片描述

系统调用和库函数的区别

  1. 提供者:
  • 系统调用:由操作系统内核提供。它们是内核暴露给应用程序的接口,用于请求内核执行某些操作,如
    文件操作、进程管理、内存管理等。
  • 库函数:由标准库或第三方库提供。这些函数通常是对系统调用的封装,也可能包含其他功能,如数学
    运算、字符串处理等。
  1. 运行时间:
  • 系统调用:属于机器时间,执行时通常涉及用户态到内核态的切换,这通常比用户态内的操作更耗时。
  • 库函数:属于用户时间,在用户态执行,不涉及上下文切换,因此通常更快。
  1. 运行空间:
  • 系统调用:在内核空间执行,这是操作系统保护的区域,用于执行特权操作。
  • 库函数:在用户空间执行,这是应用程序运行的地方。
  1. 效率:
  • 系统调用:由于涉及上下文切换和内核态执行,通常比库函数调用更耗时。
  • 库函数:在用户态执行,没有上下文切换的开销,因此通常更高效。
  1. 移植性:
  • 系统调用:依赖于特定的操作系统和内核,因此通常不易移植到其他操作系统。
  • 库函数:如果遵循标准库规范,通常可以在多种操作系统上运行,具有较好的移植性。
  1. 返回值:
  • 系统调用:通常返回特定的错误码或状态信息,用于指示调用是否成功以及可能的错误原因。
  • 库函数:返回值取决于具体的函数,可能返回计算结果、指针、状态码等。
  1. 功能的复杂程度:
  • 系统调用:通常执行底层的、原子性的操作,如打开文件、创建进程等。
  • 库函数:可能执行更复杂的任务,这些任务可能涉及多个系统调用或其他库函数的组合。
  1. 功能能否重写:
  • 系统调用:作为操作系统的一部分,通常不能由用户重写。
  • -库函数:用户可以根据自己的需要重写库函数,或者使用不同的库实现相同的功能。
    总的来说,系统调用提供了与操作系统内核交互的接口,而库函数则为用户提供了更高级、更易于使用的功能。

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

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

相关文章

一套saas模式云MES系统源码,基于springboot+vue.js+uniapp开发

一套saas模式云MES系统源码,基于springbootvue.jsuniapp开发 MES系统简介 MES系统,即制造执行系统(Manufacturing Execution System),是一种面向制造企业车间执行层的生产信息化管理系统。它位于上层的企业资源规划&a…

3步骤找回丢失文件!EasyRecovery让你轻松应对数据灾难!

EasyRecovery:数据丢失的终结者,您的数字世界守护神 在数字化时代,数据已经成为我们生活的一部分。无论是个人照片、重要文件还是企业资料,数据都扮演着重要的角色。然而,意外删除、格式化、系统崩溃或病毒攻击等原因导…

【Linux】权限的理解之权限掩码(umask)

目录 前言 一、利用八进制数值表示文件或目录的权限属性 二、系统默认的权限掩码和权限掩码的作用原理 三、分析权限掩码改变文件或目录的权限属性 前言 权限掩码是由4个数字组合而成的,默认的第一位数字是0;后三位数字分别由八进制位数字组成。权限…

Web服务器部署

简介 学习Liunx中Apache-web服务器的环境搭建及基础配置。 实验内容 实验准备 初始化yum,并安装httpd yum clean all #清理yum缓存 yum makecache #创建新缓存 yum install httpd #下载并安装web服务器 关闭防火墙、…

评测 香橙派OrangePi在智能交通上的应用

1、OrangePi应用场景 关于 Orange Pi AI Pro 开发板是香橙派联合华为精心打造的高性能 AI 开发板,其搭载了昇腾 AI 处理器,可提供 8TOPS INT8 的计算能力,内存提供了 8GB 和 16GB两种版本。可以实现图像、视频等多种数据分析与推理计算&#…

【记录】网络|没有路由器没有网线,分别使用手机或Windows电脑共享网络给ARM64开发板,应急连接

事情是这样的,我的开发板明明已经选择了记住热点 WiFi 密码,但是却没有在开机的时候自动连接,我又没有放显示器在身边,又不想为了这点事去找个显示器来,就非常难受。 我手边有的设备是: 笔记本电脑&#…

nginx 安全配置

1、前言 前后端分离后,nginx 作为跨域转发工具在日常应用中越来越广泛,它的安全性不能不能忽略。 2、nginx 安装相关说明 2.1 直接下载安装包 在nginx官网下载编译好的安装包,链接地址为nginx: download。如果是linux系统,直接使…

基于FPGA实现LED的闪烁——HLS

基于FPGA实现LED的闪烁——HLS 引言: ​ 随着电子技术的飞速发展,硬件设计和开发的速度与效率成为了衡量一个项目成功与否的关键因素。在传统的硬件开发流程中,工程师通常需要使用VHDL或Verilog等硬件描述语言来编写底层的硬件逻辑&#xff0…

Unity Apple Vision Pro 开发(一):开发前期准备【软硬件要求 | 开发者模式 | 无线调试打包】

文章目录 📕教程说明📕硬件要求📕软件要求⭐Xcode 15.2 及以上⭐visionOS 1.0 (21N301) SDK 或者更高版本⭐Unity 2022 LTS for Apple Silicon (2022.3.18f1及以上的版本)⭐Unity Pro/Unity Enterprise/Unity Industry的授权许可证 &#x1f…

solidwork3D草图案例-曲管

单位mm 3D草图 点击线,根据三视图,绘制直线, 圆角 半径25mm 扫描 三视图 如果觉得好的话,或者有疑问,请关注微信公众号咨询

淘宝扭蛋机小程序开发:探索无限惊喜的购物新体验

随着科技的不断进步,人们的生活方式也在发生翻天覆地的变化。在这个数字化、智能化的时代,淘宝扭蛋机小程序应运而生,为消费者带来了一种全新的购物体验。 淘宝扭蛋机小程序是一款集娱乐、互动、购物于一体的创新应用。它巧妙地将扭蛋机的乐…

JavaWeb开发 3.Web开发 Web前端开发 ③ HTML、CSS

没有一朵花,一开始就是一朵花 —— 24.5.28 HTML、CSS知识在博主前端专栏,可以对照博客大致进行了解 https://blog.csdn.net/m0_73983707/category_12654678.htmlhttps://blog.csdn.net/m0_73983707/category_12654678.html

SpringAdminClient如何将Httpbasic账号密码告知SpringAdminServer

场景,因为Config Service开了权限校验,注册到eureka之后,SpringAdmin查看信息会报错401,如果想在SpringAdmin中正确的看到Config Service的actuator信息则需要将账号密码告知给SpringAdmin,磁力用的是Eureka作为发现服…

java多线程创建方式

1. 继承Thread类 这种方式是通过创建一个新的类继承自Thread类,并覆盖run()方法来创建线程。然后通过创建这个类的对象并调用其start()方法来启动线程。 public class MyThread extends Thread { public void run() { // 在这里定义线程的执行逻辑 …

20240528解决飞凌的OK3588-C的核心板可以刷机不能连接ADB的问题

20240528解决飞凌的OK3588-C的核心板可以刷机不能连接ADB的问题 2024/5/28 16:34 OS:Linux R4/Buildroot 硬件接了3条线出来,一直可以刷机,但是链接ADB异常。 【总是链接不上】 Z:\OK3588_Linux_fs\kernel\arch\arm64\boot\dts\rockchip\OK3…

RuoYI框架集成Sqlite与Mybatis-plus

一、RuoYi 中集成 SQLite 、MyBatis-Plus RuoYi 是一个基于 Spring Boot 的权限管理系统,它默认使用 MySQL 作为数据库。如果你想在 RuoYi 中集成 SQLite 数据库,并使用 MyBatis-Plus 作为 ORM 框架,你需要进行一些配置和代码更改。以下是集成的基本步骤: 添加依赖:在项目…

【算法】位运算算法——两整数之和

题解:两整数之和(位运算算法) 目录 1.题目2.位运算算法3.参考代码4.总结 1.题目 题目链接:LINK 2.位运算算法 这个题目难点就在于不能用、- 那什么能够代替加号呢? 既然数的层面不能用号,那二进制的角度去用号即可。 恰好&a…

【RabbitMQ】SpringAMQP--消息转换器

SpringAMQP–消息转换器 测试发送Object类型消息 1.声明队列 Configuration public class FanoutConfig {Beanpublic Queue objectQueue(){return new Queue("object.queue");} }运行消费者后: 2.发送消息 RunWith(SpringRunner.class) SpringBootTes…

预训练模型语义相似性计算(十一) - M3E和BGE

M3E m3e由MokaAI 训练,开源和评测。 m3e的详细介绍可以看官方的github介绍。本文简要摘录其中一些点,以便后续的应用。 1.千万级 (2200w) 的中文句对数据(开源)。 2.支持同质相似句计算(s2s)和异质检索(s2p),后续支持代码检索。 3.m3e基座模…

景源畅信:抖音小店新手小白如何做好运营?

在数字时代的浪潮中,抖音小店成为了众多创业者和商家的新宠。但面对激烈的市场竞争和不断变化的平台规则,新手小白如何才能在抖音小店的海洋里稳健航行,捕捉到属于自己的商机呢?接下来的内容将为你揭晓答案。 一、精准定位,明确目…