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_out

chmod 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

posted @   沁拒离  阅读(57)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示