嵌入式C开发 文件IO介绍 文件系统及文件描述符

文件编程

Linux中文件的作用

文件IO:一切皆文件!(VFS 虚拟文件管理系统 以此来实现的)-普通文件,d目录文件,c/b设备文件,l链接文件(p管道文件,s套接字(共享文件),f堆栈文件)

为什么要用文件来管理一切?
1、由于要存储大量文件,但如何对这些文件实施有效的管理呢?—文件系统(管理文件的软件,把文件分类管理)
2、Linux根目录简介—根文件系统(根目录)-----bin(普通用户)sbin(管理员)dev(设备文件)etc(配置文件)lib(系统运行的库)usr/lib usr/include usr/sbin usr/bin、home(普通用户)、root(超级用户)、boot、proc、sys

操作普通文件:C库函数(相当于中间件)/API(系统调用)
操作c/b设备文件:fread fwrite

pwd:在Linux层次结构中,想要知道当前所处的目录,可以用pwd命令,该命令显示整个路径名。

用户空间:fopen
C库:实现fopen()
{
API;(用户编程接口)
}
内核空间:访问文件

文件IO:初级IO(系统调用API
文件),标准IO(库函数),高级IO(文件的高级操作,高级API)
文件IO的重要性

文件描述符

文件ID
动态分配:只要当操作这个文件时,系统才会给你分配文件描述符。关闭就收回。
非负整数:1、从编号3开始 2、0,1,2三个文件秒负数有其他作用

无缓冲访问文件(系统调用)

creat
open:C库(可以跨平台)提供的
write:内核提供的
read
lseek
close
经典文件操作–文件拷贝
0/1/2这三个文件描述符
fcntl
loctl

作业

在一个文件里面写东西,再把其内容打印出来。

#include<stdio.h>
#include<stdlib.h>
int main()
{
    FILE *fp;
    if((fp=fopen("1.txt","w"))==NULL)
    {
        printf("error");
        exit(0);
    }
    char ch;
    ch=getchar();
    while(ch!='\n')
    {
        fputc(ch,fp);
        ch=getchar();
    }
    fclose(fp);
    fp=fopen("1.txt","r");
    ch=fgetc(fp);
    while(!feof(fp))
    {
        printf("%c",ch);
        ch=fgetc(fp);
    }
    printf("\n");
    fclose(fp);
    return 0;
}

嵌入式C开发 文件IO介绍 文件系统及文件描述符

上一篇:Linux 下 C语言 open() 和 fopen() 区别


下一篇:【硬核知识】C语言文件操作!文件的打开和关闭!