C语言linux下的文件操作(1)

文件操作:

欢迎加入QQ:498903810 一起交流、讨论知识,里面有大佬,也有小白,天下码农一家亲,大家一起讨论进步。

1、静态文件(Inode)

    硬盘中的文件,就是静态文件。每一个文件都是以多个块和多个扇区组成的,一般情况,一个扇区(512字节),64个扇区组成一个块。
    在硬盘中,对文件管理有一个特定的规则(文件管理表 + 真实的内容):文件管理表,这个表中是以文件为单位,提供了各个文件的 
    所有信息(每一个文件信息表就对应一个结构体,这个结构体称之为inode,也叫i节点,这个文件的包含的多少个块、多少扇区),、
    而我们通过查找这个表就可以找到我们所需要文件内容。
我们找文件,通过(文件名字)找的。

第一步:在文件管理表中,中找到这个文件的名字
第二步:访问这个文件。
    U盘/硬盘格式化:
        1、快速格式化:清除了你的文件管理表,文件系统找不到你所    需要的文件名字。你的真实文件还在硬盘里,可以部分恢复。

        2、彻底格式化:把文件真实内容也清除掉了,你的U盘不能软件   技术恢复。必须借助国家安全机构(通过物理机制,通过硬件的记忆)。
联系:生活中,处理小文件的一个手段,文件压缩.把扇区的空余字节都利用起来,减少了占用硬盘上的空间。硬盘喜欢大文件。

2、动态文件 (Vnode)—>在内存中

一个程序的运行就是一个进程。而我们打开的文件就属于这个进程,而操作系统对于每一个进程都有一个结构体进行管理,这个管理当前进程所有
信息的结构体,我们就叫作(进程信息表)。这个表中有一个指针指向我们
的文件管理表,这个文件管理表就包含了本进程打开的所有文件,通过查找文件管理表的index(文件描述符fd,相当于这个结构体数组的下标),
    就得到了我们的文件所有信息的结构体(Vnode),而这个结构体的指针就是文件指针。

stat text.c 查看text.c文件的信息

IO:写入文件的缓冲区,减少了文件写入的频率,一般为4K大小

2.1文件属性

最近更改:2018-01-25 10:51:17.543987887 +0800
最近改动:2018-01-25 10:51:17.543987887 +0800

最近更改指的是:文件的内容发生改变的时间。
最近改动指的是:文件的权限发生改变的时间。

3、文件与流

系统级别的文件操作函数:文件IO;标准库提供的操作文件函数:标准IO。区别在于:可移植性。文件IO可以完成对文件的所有操作,但是效率不高,
所以出现了使用标准IO;但是我们必须知道,标准IO最终也是通过文件IO实现的。

流:字符流的意思。读写文件的时候,是一个一个字符操作的连续进行。文件内容中是不分,行的仅仅连在一起的。

fwirte写进去的是数字,但是文件里没有数字,文件里放的是ASCII编码
fopen可以指定打开文件的格式
文件复制:1、连续打开同一个文件(inode)
         2、C语言里有两个API(dup, dup2)
           #include <unistd.h>

           int dup(int oldfd);//函数分配文件描述符
           int dup2(int oldfd, int newfd);//自己指定文件描述符
            用dup()创建的文件描述符,和旧的文件描述符号,各自操
           作自己的那份文件,但是两者的读写操作互相影响文件指
           针,相当于多次open加了O_APPEND标志。
            文件描述符:
                0:标准输入
                1:标准输出
                2:标准错误
         3、多个进程打开同一个文件
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值