Linux--文件

news2024/9/20 20:44:07

文件的基本信息

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

文件的描述

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

在这里插入图片描述

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.coloradmin.cn/o/1437552.html

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

相关文章

《Java程序设计》实验报告(二)之面向对象编程基础

实验内容及步骤&#xff1a; 编写不带构造函数的类并测试。&#xff08;学生类、圆类&#xff09;&#xff08;1&#xff09;代码&#xff1a; class Student { String name"张三"; int age20; String sex"男";//gender String getName(){…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之RichText组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之RichText组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、RichText组件 鸿蒙&#xff08;HarmonyOS&#xff09;富文本组件&#xff0c;…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Video媒体组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之Video媒体组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、Video媒体组件 用于播放视频文件并控制其播放状态的组件。 子组件 无 接口…

8.0 Zookeeper 四字命令教程详解

zookeeper 支持某些特定的四字命令与其交互&#xff0c;用户获取 zookeeper 服务的当前状态及相关信息&#xff0c;用户在客户端可以通过 telenet 或者 nc&#xff08;netcat&#xff09; 向 zookeeper 提交相应的命令。 安装 nc 命令&#xff1a; $ yum install nc …

国密SM2算法进行数据的加密、签名和验签、解密

一、背景介绍 数据的加解密有很多种方式&#xff0c;几种常用的加密算法如下&#xff1a; DES&#xff08;Data Encryption Standard&#xff09;&#xff1a;对称算法&#xff0c;数据加密标准&#xff0c;速度较快&#xff0c;适用于加密大量数据的场合&#xff1b; 3DES&…

黄金交易策略:heiken ashi smoothed与macd快慢指标协同工作

第2点应该是有很大的优化空间 推荐阅读&#xff1a;Nerve Knife.ex4黄金交易策略_黄金趋势ea-CSDN博客

【chromium】windows构建base库 3:gn + vs2022 args 设置及debug x86 构建

GN 构建配置GN 构建配置 此页面提供了 GN 构建的一些常见构建设置。它假设您已经获得了 Chromium checkout。 也可以看看 从命令行运行“gn help”。 所有 GN 文档 GN 快速入门指南 GN 参考 (一个网页中“gn help”中所有内容的转储)。 了解 GN 构建标志 回想一下,在 GN …

Redis(02)——事务管理

事务概念 Redis事务的本质是一组命令的集合。事务支持一次执行多个命令&#xff0c;一个事务中所有命令都会被序列化&#xff0c;在事务执行过程中&#xff0c;会按照顺序串行化执行队列中的命令&#xff0c;其他客户端提交的命令请求不会插入到事务执行命令序列中 Redis事务…

QT设置qss

Qt设置qss文件&#xff08;设置在qrc中&#xff09; 1、右击项目选择添加新文件 2、在弹出的对话框中选择Qt -> Qt Resource File 3、随便起一个名称 4、在代码路径下新建一个stylesheet.qss文件&#xff0c;随便写入一些样式 5、右击resources.qrc&#xff0c;选择添加…

go modules使用

创建项目 在使用GoLand创建项目的时候&#xff0c;会自动创建对应的go.mod文件。 创建完后 创建文件 创建一个main.go的文件&#xff0c;里面print一个hello world。 在运行时可以设置是否采取先生成文件再运行。 为空的话则不输出。 下面的Environment为设置运行的环境…

数据恢复软件应该怎么选?看这篇就够了

存储数据的选择有很多&#xff0c;例如计算机硬盘、智能手机、平板电脑、闪存驱动器和存储卡。然而&#xff0c;所有这些都可能在某个时刻失败。我们当中谁没有不小心删除过重要的文档或照片&#xff1f; 如果最坏的情况发生&#xff0c;仍然有希望。一种选择是聘请数据恢复服…

【Linux】线程Pthread的概念 | NPTL线程库函数

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;Linux系列专栏&#xff1a;Linux基础 &#x1f525; 给大家…

10个优化Instagram SEO的必学策略

Instagram SEO 是优化 Instagram 内容以使其在平台搜索结果中被发现的做法。如果你希望你可以更快的让你的Ins获得流量&#xff0c;做好SEO就成功了一半。Instagram 搜索结果包括相关内容、帐户、音频、主题标签和地点&#xff0c;下面为你总结10个策略技巧&#xff01; 一、In…

矩阵的正定(positive definite)性质的作用

1. 定义 注意&#xff0c;本文中正定和半正定矩阵不要求是对称或Hermite的。 2. 性质 3. 作用 &#xff08;1&#xff09;Axb直接法求解 cholesky实对称正定矩阵求解复共轭对称正定矩阵求解LDL实对称非正定矩阵求解复共轭对称非正定矩阵求解复对称矩阵求解LU实非对称矩阵求解…

【新书推荐】6.3 switch语句

本节必须掌握的知识点&#xff1a; 示例代码二十一 代码分析 汇编解析 6.3.1 示例二十一 ■switch语句形式 switch语句是一种多路判断语句&#xff0c;会根据不同的选项&#xff0c;跳转到不同的分支语句。 switch语句的语法格式&#xff1a; switch(Controlling Expr…

情报搜集神器:Spiderfoot 保姆级教程

一、介绍 SpiderFoot是一款开源的情报搜集和足迹分析工具&#xff0c;用于自动化收集有关目标的信息。它被设计为一种开放式情报&#xff08;OSINT&#xff09;工具&#xff0c;可以帮助安全专业人员、渗透测试人员和研究人员收集、分析和汇总来自互联网的信息。 以下是 Spid…

java的excel列行合并模版

1.效果 2.模版 <tableborder"1"cellpadding"0"cellspacing"0"class"tablebor"id"TABLE"><tr align"center" class"bg217"><td style"background-color: #008000; color: #ffffff;p…

华为数通方向HCIP-DataCom H12-821题库(单选题:441-460)

第441题 下面是一台路由输出的信息,关于这段信息描述正确的是 <R1>display bgp peerBGP local router ID : 2.2.2.2Local AS number : 100Total number of peers : 2 Peers in established state : 0Peer V AS MsgRcvd MsgSent OutQ Up/Down …

fgcvbnm

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起探讨和分享Linux C/C/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。 磁盘满的本质分析 专栏&#xff1a;《Linux从小白到大神》 | 系统学习Linux开发、VIM/GCC/GDB/Make工具…

离谱!英国大学53%本科生用AI写论文!留学生该如何面对AI冲击?

随着AI的不断强化和更新换代&#xff0c;越来越多的学生开始使用人工智能辅助写论文&#xff0c;能省去不少信息搜集的时间。 英国大学从最开始的明令禁止&#xff0c;到如今也在逐步接受学生将它用做辅助工具&#xff1a; 然而&#xff0c;AI的使用其实还存在很多问题&#xf…