Linux--文件

文件的基本信息

文件是计算机系统中存储数据的一种单位
它可以是文本、图像、音频、视频等信息的载体。文件通常以特定的格式和拓展名来表示其内容和类型。
在计算机系统中,文件使用文件名来唯一标识和访问。文件可以被创建、读取、写入、复制、移动、删除等操作。文件还可以按照目录结构进行组织,形成文件夹或目录。

文件的描述

文件的描述是对文件的一种详细说明。它可以包括文件的属性、内容、用途、格式、大小、创建时间、修改时间等信息。
文件的描述通常用于帮助用户理解和识别文件,并提供文件的上下文信息。文件的描述可以作为元数据存储在文件系统或其他文件管理系统中,以便用户和程序能够更加方便地浏览、搜索和管理文件。

在这里插入图片描述

C语言的文件接口函数

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

详见:C语言–文件操作

位图传参

在这里插入图片描述

系统调用的文件接口

open

open是一个系统调用函数,用于打开或创建文件。
原型:

#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);

参数pathname是文件的路径名,flags是打开文件的标志位,mode是创建文件时的权限
常用的flags参数包括:

  • O_RDONLY:只读方式打开文件
  • O_WRONLY:只写方式打开文件
  • O_RDWR:可读可写方式打开文件
  • O_CREAT:如果文件不存在则创建新的文件
  • O_TRUNC:如果文件存在则将其长度截断为0
  • O_APPEND:在文件末尾追加数据

open函数返回一个文件描述符,可以通过该文件描述符进行文件的读写操作。如果打开或创建文件失败,open函数将返回-1,并设置errno变量来指示具体的错误信息。

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

close

关闭open函数对应打开的文件,输入参数为文件描述符(open函数的返回值);
在这里插入图片描述

write

write是一个系统调用函数,用于向文件描述符中写入数据。它的原型如下:

#include<unistd.h>
ssize_t write(int fd,const void* buf,size_t count);

参数说明

  • fd是文件描述符,表示要写入的目标文件或设备。
  • buf是待写入数据的缓冲区指针。
  • count是待写入的数据字节数。

返回值说明

  • 如果成功写入,则返回实际写入的字节数。
  • 如果出现错误,则返回-1,并设置errno变量来指示具体的错误类型。

使用write函数时需要注意以下几点

  • 数据写入是按照字节为单位进行的,所以必须确保缓冲区大小与写入数量的一致性。
  • 写入操作不会自动在字符串末尾添加’\0’结束符,因此如果写入的是字符串,需要自行在缓冲区末尾添加结束符。
  • 文件打开时必须具有写入权限,否则写入操作将失败。

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

read

read是一个系统调用函数,用于从文件描述符中读取数据。原型如下:

#include<unistd.h>
ssize_t read(int fd,void* buf,size_t count);

其中,fd为要读取的文件描述符,buf为数据存储的缓冲区,count为要读取的最大字节数

read函数会从指定的文件描述符中读取数据,并将其存储到buf所指向的缓冲区中。它返回实际读取的字节数,如果出现错误则返回-1。在读取文件时,需要注意处理读取字节数小于请求的情况,以及处理读取过程中可能发生的错误

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

文件描述符

文件描述符是操作系统对打开文件的引用或索引,用于标识和操作文件在Linux中,每个进程都有一个文件描述符表,用于跟踪它所打开的文件

文件描述符是非负整数的,通常表示为整数类型int。标准输入、标准输出和标准错误分别有预定义的文件描述符值,分别为0、1、2;

文件描述符可以用于执行以下操作:

  • 打开文件:通过open()系统调用获取一个文件描述符来打开文件。
  • 读取文件:使用read()系统调用从文件描述符读取数据。
  • 写入文件:使用write()系统调用向文件描述符写入数据。
  • 关闭文件:使用close()系统调用关闭文件描述符。

文件描述符的值在同一进程中是唯一的,但在不同的进程之间可以共享。当一个进程通过fork()创建子进程时,子进程会继承父进程的文件描述符表。

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

所以,可以看出:
在这里插入图片描述
在这里插入图片描述

文件描述符的填充规则

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

修改重定向函数:dup2

在Linux系统中,dup2是一个系统调用函数,用于复制文件描述符。它的原型如下:

#include <unistd.h>int dup2(int oldfd, int newfd);

该函数将文件描述符oldfd复制到文件描述符newfd上,并返回新的文件描述符。如果newfd已经被使用,则先关闭它。这样可以实现重定向文件描述符的功能,比如将标准输入、输出或错误重定向到指定文件描述符上。

示例用法:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

相机图像质量研究(8)常见问题总结:光学结构对成像的影响--工厂调焦

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结&#xff1a;光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结&#xff1a;光学结构对成…

Python程序员面试题精选(1)

本文精心挑选了10道Python程序员面试题&#xff0c;覆盖了Python的多个核心领域&#xff0c;包括装饰器、lambda函数、列表推导式、生成器、全局解释器锁(GIL)、单例模式以及上下文管理器等。每道题都附有简洁的代码示例&#xff0c;帮助读者更好地理解和应用相关知识点。 题目…

嵌入式中IPv5去哪了?

只要使用过电脑的人&#xff0c;99%应该都知道IP地址&#xff0c;前几个月有一个重大的新闻“全球IPv4地址耗尽”相信大家都听说了。 然后IPv6就成了当下发展的趋势&#xff0c;包括有些手机APP会重点标注“兼容IPv6”等信息。那么问题来了&#xff1a;IPv4之后直接是IPv6&…

高灵敏比色法IgG2a (mouse) ELISA kit

用于检测IgG2a&#xff08;小鼠&#xff09;的高灵敏度ELISA试剂盒&#xff0c;仅需90分钟即可得到实验结果 免疫球蛋白G&#xff08;IgG&#xff09;是一种免疫球蛋白单体&#xff0c;由两条&#xff08;γ&#xff09;重链和两条轻链组成。每个IgG分子包含两个抗原结合域和一…

修改JDK文件路径或名称(以及修改后jJRE文件变红的解决)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

Vue中对虚拟DOM的理解

作为现代前端开发中的主流框架之一&#xff0c;Vue.js是一个非常流行的JavaScript框架&#xff0c;其核心概念之一就是虚拟DOM&#xff08;Virtual DOM&#xff09;。在本篇文章中&#xff0c;我们将深入探讨Vue中虚拟DOM的概念&#xff0c;并讨论为什么它在前端开发中如此重要…

mfc110.dll是什么?解决mfc110.dll丢失windows系统常见问题

今天我在打开电脑软件时候&#xff0c;突然报错出现找不到mfc110.dll丢失&#xff0c;无法打开软件&#xff0c;我不知道是什么原因&#xff0c;后面找了很久才找到解决方法&#xff0c;那么mfc110.dll是什么&#xff1f;为什么会丢失和mfc110.dll解决方法是什么&#xff0c;今…

vue3项目中使用mapv

vue3项目中使用mapv mapv是百度地图官方提供的地图数据可视化开源项目&#xff0c;提供了很多效果酷炫的绘图api mapv地址在这里&#xff0c;示例图在这里 先解释为什么要用mapv echarts画的地图&#xff0c;都是行政区划&#xff0c;就算是geo地图&#xff0c;也只能在行政…

【计算机网络】17、http request header Origin 属性、跨域 CORS、同源、nginx 反向代理、预检请求

文章目录 一、Origin 含义二、跨源资源共享&#xff1a;**Cross-Origin Resource Sharing** CORS2.1 跨域的定义2.2 功能概述2.3 场景示例2.3.1 简单请求2.3.2 Preflighted requests&#xff1a;预检请求 2.4 header2.4.1 http request header2.4.1.1 Origin2.4.1.2 Access-Con…

python 动态数据 展示 ,数据是由51单片机发送过来的,温度传感器。

import tkinter as tk import randomimport seriallis[] for i in range(50):lis.append(i1) # 打开串行端口 ser serial.Serial(COM3, 9600) # 9600为波特率&#xff0c;根据实际情况进行调整# 初始化数据 lis [random.randint(15, 35) for _ in range(50)]def update_data…

时序预测 | Matlab实现基于LSTM长短期记忆神经网络的电力负荷预测模型

文章目录 效果一览文章概述源码设计参考资料效果一览 文章概述 时序预测 | Matlab实现基于LSTM长短期记忆神经网络的电力负荷预测模型 LSTM(长短期记忆)是一种递归神经网络(RNN)的变体,它在序列数据建模方面表现出色。电力负荷预测是一项重要的任务,可以利用LSTM神经网络…

Damn Small Linux 停更16年后,2024 回归更新

Damn Small Linux(DSL) 发行版释出了最新的 2024 版本&#xff0c;并重新定义了什么叫“Damn Small”。 DSL 诞生于 2005 年&#xff0c;原本是尝试提供一个 50MB 大小的 LiveCD&#xff0c;2008 年开发停滞。 2024 年原作者 John Andrews 宣布 DSL 复活&#xff0c;在几乎所…

再这么烂下去,离糊就不远了。别让才华被埋没。

♥ 为方便您进行讨论和分享&#xff0c;同时也为能带给您不一样的参与感。请您在阅读本文之前&#xff0c;点击一下“关注”&#xff0c;非常感谢您的支持&#xff01; 文 |猴哥聊娱乐 编 辑|徐 婷 校 对|侯欢庭 近日&#xff0c;胡歌凭借电视剧《繁花》荣登《环球银幕》二月…

【Django】Django日志管理

Django日志管理 Django使用Python内置的logging模块处理系统日志。 1.日志框架的组成元素 Python logging 配置由下面四部分组成&#xff1a; Loggers Handlers 过滤器 Formatters 1.1 Loggers logger是日志系统的入口&#xff0c;每个 logger都是命名了的 bucket&…

GEE数据集——美国干旱监测数据集(更新)

美国干旱监测 美国干旱监测》是每周四发布的地图&#xff0c;显示美国部分地区的干旱情况。该地图采用五种分级&#xff1a;异常干旱&#xff08;D0&#xff09;&#xff0c;显示可能进入或即将摆脱干旱的地区&#xff1b;四级干旱&#xff1a;中度&#xff08;D1&#xff09;、…

蓝桥杯嵌入式第8届真题(完成) STM32G431

蓝桥杯嵌入式第8届真题(完成) STM32G431 题目 分析和代码 对比第六届和第七届&#xff0c;这届的题目在逻辑思维上确实要麻烦不少&#xff0c;可以从题目看出&#xff0c;这届题目对时间顺序的要求很严格&#xff0c;所以就可以使用状态机的思想来编程&#xff0c;拿到类似题…

记一次使用gophish开展的钓鱼演练

这周接到客户要求&#xff0c;组织一次钓鱼演练&#xff0c;要求是发送钓鱼邮件钓取用户账号及个人信息。用户提交后&#xff0c;跳转至警告界面&#xff0c;以此来提高客户单位针对钓鱼邮件的防范意识。 与客户沟通后得知他们企业内部是由邮箱网关的&#xff0c;那么就意味着…

正点原子--STM32基本定时器学习笔记(1)

目录 1. 定时器概述 1.1 软件定时原理 1.2 定时器定时原理 1.3 定时器分类 1.4 定时器特性表 1.5 基本、通用、高级定时器的功能整体区别 2. 基本定时器简介 3. 基本定时器框图 时钟树分析 这部分是笔者对基本定时器的理论知识进行学习与总结&#xff01;主要记录学习…

UsernamePasswordAutheticationFilter源码解读和实践

UsernamePasswordAuthenticationFilter的目录 一、概述&#xff08;重点&#xff09;二、标红小步骤解读2.1 步骤1&#xff08;标红1&#xff09;2.1.1 AbstractAuthenticationProcessingFilter2.1.2 UsernamePasswordAuthenticationFilter 2.3 步骤2 和 步骤3&#xff08;标红…

【SpringBoot篇】解决Redis分布式锁的 误删问题 和 原子性问题

文章目录 &#x1f354;Redis的分布式锁&#x1f6f8;误删问题&#x1f388;解决方法&#x1f50e;代码实现 &#x1f6f8;原子性问题&#x1f339;Lua脚本 ⭐利用Java代码调用Lua脚本改造分布式锁&#x1f50e;代码实现 &#x1f354;Redis的分布式锁 Redis的分布式锁是通过利…