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 分别对应着标准输
入,标准输出,标准错误。



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_out
chmod 777 add_file_out
./add_file_out
注:想在linux中执行c语言构建的程序,需要使用交叉编译链生成对应本机位数和架构的链接文件执行。
例如我使用默认gcc编译出的链接文件类型是ARM64位,对应本机,可直接执行。
3、执行结果:

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

Linux操作文件IO的更多相关文章
- linux中文件IO
一. linux常用文件IO接口 1.1. 文件描述符 1.1.1. 文件描述符的本质是一个数字,这个数字本质上是进程表中文件描述符表的一个表项,进程通过文件描述符作为index去索引查表得到文件表指 ...
- linux下 文件IO 相关
linux下操作文件或设备,需要一个文件描述符 file descriptor,fd 来引用.fd是一个非负整数,实际上是一个索引值,指向文件的记录表,对文件的操作都需要fd.默认的几个:标准输入流 ...
- 漫谈linux之文件IO篇(SSD写性能和机械硬盘差不多,读是4到10倍)
前同事的文章,觉得写得很清晰,收藏了. http://blog.chinaunix.net/uid-27105712-id-3270102.html 在Linux 开发中,有几个关系到性能的东西,技术 ...
- Linux C 文件IO
文件IO 2021-05-31 12:46:14 星期一 目录 文件IO 基础IO open 错误 creat read 一个例子 write close lseek 文件空洞 unlink删除 io ...
- 【Linux】文件IO --- sync、fsync、fdatesync
在使用write函数向文件中写入数据的时候,并不是在调用了函数以后就直接把数据写入磁盘:操作系统在内核中设置了一块专门的缓冲区,数据会先被写入到内核的缓冲区中,等到缓冲区满了或者系统需要重新利用缓冲区 ...
- linux 操作文件夹
创建文件夹[mkdir] 一.mkdir命令使用权限 所有用户都可以在终端使用 mkdir 命令在拥有权限的文件夹创建文件夹或目录. 二.mkdir命令使用格式 格式:mkdir [选项] DirNa ...
- linux操作文件和文件夹
rm filerm -rf folder如将/test1目录下的file1复制到/test3目录,并将文件名改为file2,可输入以下命令:cp /test1/file1 /test3/file2 如 ...
- imx6用文件io操作gpio
具体请参考: http://blog.csdn.net/u014213012/article/details/53140781 这里要注意的是: 要让linux支持文件io方式操作gpio,首先驱动必 ...
- Linux系统编程--文件IO操作
Linux思想即,Linux系统下一切皆文件. 一.对文件操作的几个函数 1.打开文件open函数 int open(const char *path, int oflags); int open(c ...
- Linux下用文件IO的方式操作GPIO(/sys/class/gpio)(转)
通过sysfs方式控制GPIO,先访问/sys/class/gpio目录,向export文件写入GPIO编号,使得该GPIO的操作接口从内核空间暴露到用户空间,GPIO的操作接口包括direction ...
随机推荐
- 从Delphi到Lazarus——安装最新版的Lazarus
0.前言 在这篇文章里将会介绍以下内容: 下载最新版的Lazarus安装程序 安装Lazarus 安装整合IDE界面的软件包 编译运行你的第一个测试程序 结束语 1.下载最新版的Lazarus安装程序 ...
- WSLg 中文输入法 fcitx5
随着 Win11 22H2 和 WSLg 的推出,很多开启输入法的教程都过时了.记录一下最新实践: WSL 安装 Ubuntu 后,安装中文语言 sudo /usr/bin/gnome-languag ...
- Yakit靶场-高级前端加解密与验签实战-全关卡通关教程
一.前端验签-SHA256 本文作者为CVE-柠檬i CSDN:https://blog.csdn.net/weixin_49125123 博客园:https://www.cnblogs.com/CV ...
- Hive数据库【操作】+ 【分区】+【分桶】+【查询】+【运算】+【函数】
目录 键值对信息 数据库表操作 内部表操作 外部表操作 分区表的操作 分桶表操作 数据查询 关系运算 数学运算 逻辑运算 数值计算 日期函数 键值对信息 添加数据库的描述信息(添加键值对信息) cre ...
- Qt音视频开发02-海康sdk解码(支持句柄/回调/gpu模式/支持win/linux)
一.前言 为何还要选用使用海康sdk,之前不是ffmpeg已经牛皮吹上天了吗?这个问题问得好,那是因为无论ffmpeg也好还是vlc/mpv之类的,都是实现的播放相关,不同的监控硬件厂家对应设备还有很 ...
- Qt编写物联网管理平台34-地图按钮
一.前言 地图按钮很常见,这也是用户给钱就干的一个模块.设备现场提供了对应的地图文件,其实就是图片文件,做的简单点就是直接CAD图纸转成jpg,做的精致点就是搞了3D风格的立体样式图片,其实还是图片, ...
- Qt开源作品42-视频监控布局
一.前言 自从做监控系统以来,就一直有打算将这个功能独立出来一个类,这样的话很多系统用到此类布局切换,通用这个类就行,而且后期此布局会增加其他异形布局,甚至按照16:9之类的比例生成布局,之前此功能直 ...
- vue-cli@4搭建 vue + element-ui 项目实操
原文链接: vue-cli@4搭建 vue + element-ui 项目实操
- Python格式化字符串字面值 | 被官方文档称之为『漂亮』的输出格式
Python格式化字符串字面值 | 被官方文档称之为『漂亮』的输出格式 本文参考输入输出 - Python 3.7.10 文档.首先声明咱的实验环境. ❯ python --version Pytho ...
- 在jooq的POJO类中使用Lombok的Data注解
jooq生成pojo类的配置根据官方给的如下: https://www.jooq.org/doc/3.14/manual/getting-started/tutorials/jooq-in-7-ste ...