Linux操作文件IO

Linux操作文件IO

参考自:【北京迅为】嵌入式linux开发指南_v1.1(i.MX6ULL)

文件 IO 是 Linux 系统提供的接口,针对文件和磁盘进行操作,不带缓存机制;

标准 IO 是 C 语言函数库里的标准 I/O 模型,在 stdio.h 中定义,通过缓冲区操作文件,带缓存机制。Linux 系统中一切皆文件,包括普通文件,目录,设备文件(不包含网络设备),管道,fifio 队列,socket 套接字等,在终端输入“ls -l”

可查看文件类型和权限。

文件 IO 是直接调用内核提供的系统调用函数,头文件是 unistd.h,标准 IO 是间接调用系统调用函数,

头文件是 stdio.h,文件 IO 是依赖于 Linux 操作系统的,标准 IO 是不依赖操作系统的,所以在任何的操作系

统下,使用标准 IO,也就是 C 库函数操作文件的方法都是相同的。

对于文件 IO 来说,一切都是围绕文件操作符来进行的。在 Linux 系统中,所有打开的文件都有一个对

应的文件描述符。文件描述符的本质是一个非负整数,当我们打开一个文件时,系统会给我们分配一个文

件描述符。当我们对一个文件做读写操作的时候,我们使用 open 函数返回的这个文件描述符会标识该文件,

并将其作为参数传递给 read 或者 write 函数。在 posix.1 应用程序里面,文件描述符 0,1,2 分别对应着标准输

入,标准输出,标准错误。

image-20241226092829195

image-20241226101824324

image-20241226102000334

1、新建文件IO操作c语言文件

vim add_file.c
#include <stdio.h>  // 引入标准输入输出库#include <stdlib.h> // 引入标准库,用于exit等函数#include <sys/types.h> // 引入系统数据类型定义#include <sys/stat.h> // 引入文件状态操作库#include <fcntl.h> // 引入文件控制库,用于文件操作int main(int argc*,char *argv[]) // 主函数,argc为命令行参数个数,argv为参数数组{int fd; // 定义文件描述符变量fd// 打开文件"file.c",fd=open("file.c",O_CREAT|O_RDWR,0666);//O_CREAT表示如果文件不存在则创建,//O_RDWR表示读写权限,0666表示文件权限为rw-rw-rw-if(fd<0)printf("open is error\n");printf("fd is %d\n",fd);return 0;	}

该代码大致意思是在当前目录先打开文件file.c,若没有这个文件,则会先新建,并设置可读可写权限,结束后打印该文件文件描述符

2、交叉编译,赋权,执行

gcc add_file.c -o add_file_outchmod 777 add_file_out./add_file_out

注:想在linux中执行c语言构建的程序,需要使用交叉编译链生成对应本机位数和架构的链接文件执行。

例如我使用默认gcc编译出的链接文件类型是ARM64位,对应本机,可直接执行。

3、执行结果:

image-20241226103811086

这意味着open函数成功返回的文件描述符是3。这表示系统为你的进程分配了一个新的文件描述符3来表示file.c文件。由于标准输入、标准输出和标准错误已经使用了文件描述符012,因此file.c文件的文件描述符从3开始。

ls查看,成功新建文件file.c

image-20241226104120195

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

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

相关文章

K230学习记录

K230学习记录 参考自: # 立创庐山派-K230-CanMV开发板资料与相关扩展板软硬件资料官网全部开源 # 开发板官网:www.lckfb.com # 技术支持常驻论坛,任何技术问题欢迎随时交流学习 # 立创论坛:www.jlc-bbs.com/lckfb串口0(115200),连接进入打印U-Boot信息ctrl+R可以快速重装…

windows与虚拟机linux通过ssh进行连接并上传文件

windows与虚拟机linux通过ssh进行连接并上传文件 windows配置 以管理员打开powershell下载和启动安装ssh客服端 Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0 Start-Service sshd Set-Servi…

[Java/网络/HTTP(S)] 基于`Http(s)URLConnection`的网络请求工具(HttpRequestUtils)

1 序轻量级HTTP网络请求工具,接续:[Java SE/JDK/网络] 核心源码精讲:java.net.HttpURLConnection - 博客园/千千寰宇 [身份认证/JWT] 身份认证方案与HTTP请求中Authorization Header - 博客园/千千寰宇 【推荐】 [网络/HTTPS/Java] PKI公钥基础设施体系:数字证书(X.509)、C…

2024/12/17 【字符串】LeetCode 459.重复的子字符串 【❌】

https://programmercarl.com/0459.%E9%87%8D%E5%A4%8D%E7%9A%84%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2.html#%E6%80%9D%E8%B7%AF https://leetcode.cn/problems/repeated-substring-pattern/ 子串结束位置大于中间位置的话,一定不能重复组成字符串。 如果 next[len - 1] != -1…

一起鸿蒙吧,现在到了「绝佳时刻」

摘要:它已经不止于可用和好用,而是迈向“必用”的新阶段了。 10月22日,原生鸿蒙操作系统如约而至。 作为一个全新的操作系统,原生鸿蒙拥有流畅、安全、智能、互联、精致五大原生特性,为无数用户开启了一个全新的数字生活方式。 如果你正在犹豫是否要升级原生鸿蒙系统,那么…

题目集7~8总结性博客

前言 在本学期的学习过程中,我们共完成了三次题目集的练习,其中第七题和第八题集在知识点、题量和难度上具有一定的代表性。总体而言,这两次题目集涵盖了面向对象编程(OOP)、设计模式、数据结构与算法、软件工程等多个核心知识点。 知识点总结: 面向对象编程(OOP): 类…

Python 中使用 Matplotlib 进行多图绘制

Python 中使用 Matplotlib 进行多图绘制 Matplotlib 是 Python 中非常强大的数据可视化工具,它可以用来生成简单到复杂的各种图形。无论是处理单张图表还是多图并列展示,Matplotlib 都能提供高效的支持。在本篇文章中,我们将介绍如何使用 Matplotlib 绘制多图,以便在同一画…

fping 的使用方法

fping简介 fping是一个小型命令行工具,用于向网络主机发送ICMP回应请求,类似于ping,但在ping多个主机时性能要高得多。 fping完全不同于ping,因为可以在命令行上定义任意数量的主机,或者指定包含要ping的IP地址或主机列表的文件。 与ping要等待某一主机连接超时或发回反馈…

.NET Bioss相关数据读写

本文我们介绍针对Bios如何读取、写入数据,比如最常见的SN读取以及烧录 WMI查询 先看看WMI方式,可以用于查询和管理Windows系统的各种信息,包括读取BIOS信息 WMI-Win32_BIOS,可以查看Bios版本、制造商以及Bios Sn等:1 var searcher = new ManagementObjectSear…

家居强电电路模拟程序总结

一、前言:这两次的PTA作业第一次是以前两次家居强电电路模拟程序为基础所扩展的,在上一次作业的基础上增加了一个新的互斥开关,互斥开关的电路符号为H,其12引脚之间电阻为5欧,13引脚之间电阻为10欧,还增加了一个新的受控窗帘,受控窗帘的电路符号为S,窗帘电阻为15欧,其…

Python 正则表达式进阶用法:字符集与字符范围详解

Python 正则表达式进阶用法:字符集与字符范围详解 正则表达式是文本处理和数据清洗中不可或缺的工具。在前面的学习中,我们已经了解了基本的正则表达式匹配,如匹配单个字符、字符串开始和结束的位置等。今天,我们将进入正则表达式的一个进阶主题:字符集(Character Set)和…

如何免费使用 Termius Pro 版?Termius 工具下载与破解教程

今天想和大家聊聊 Termius 工具,Termius的下载与Termius破解教程,一款跨平台的 SSH/SFTP 终端工具。它不仅功能强大,还特别适合需要频繁上传文件夹和进行远程管理的小伙伴。无论你是程序员、运维工程师,还是需要远程管理服务器的爱好者,这款工具都能成为你的得力助手!今天…