Linux——lseek函数、stat函数、lstat和stat、linux和Unix隐式回收、目录操作函数

一、lseek函数

在这里插入图片描述

  • 获取文件大小示例👇
    在这里插入图片描述
  • 扩展文件大小示例,但是如果要真改变文件大小必须有I/O读写操作
  • 无I/O示例的扩展👇
    在这里插入图片描述
    结果:原来大小是777,扩展111,lseek是888,但是文件大小还是777
    在这里插入图片描述
  • 加上I/O操作,即加个write
    在这里插入图片描述
    最重要的是,文件读写使用的是同一偏移位置,因此在文件读写的时候需要用lseek改变一下文件读写位置
    在这里插入图片描述
    如果注释lseek那行如上述代码所示,运行代码是没有内容的,因为write写到了最后,read是从write结束处开始的,因此往后是读不出东西的

二、传入传出参数

在这里插入图片描述

三、文件系统、文件存储的一些概念

首先了解如下文件存储相关概念:inode、dentry、数据存储、文件系统

  1. inode
    其本质为结构体,存储文件的属性信息,如权限、类型、大小、时间、用户、盘块位置……也叫做文件属性管理结构,大多数的inode都存储在磁盘上
    少量使用、近期使用的inode会被缓存到内存中
  2. dentry
    目录项,其本质依然是结构体,重要成员变量有两个{文件名,inode},文件内的内容保存在磁盘块上

在这里插入图片描述
创建硬链接就是同一个inode号,当硬连接数为0即没有指向的时候磁盘就可以被覆盖

四、stat函数、lstat函数

1,stat函数:获取文件属性(从inode结构体中获取)
在这里插入图片描述
获取文件长度👇 注意第二个参数strut stat的头文件
在这里插入图片描述使用st_mode可以查看文件类型
在这里插入图片描述
例子👇
在这里插入图片描述
但是关于最后一个判断符号链接,stat是会穿透符号链接的,意思是判断的就是“本尊”的类型,要想不穿透符号链接,就要用lstat函数

2,lstat函数
参数返回都是一样的,就是对符号链接的判断有区别:👇
在这里插入图片描述

Linux对一些复杂的函数是有demo的,可以去看

五、link函数,unlink函数、隐式回收

  1. link函数:为已经存在的文件创建目录项
    在这里插入图片描述
    可以用link函数和unlink函数实现mv函数,即改文件名字,先创建一个再删除原来的就ok√
    在这里插入图片描述
  2. unlink函数:删除一个文件的目录项
    在这里插入图片描述

⭐⭐这种思想要记一下⭐⭐

  1. 隐式回收
    当进程结束运行时,所有该进程打开的文件会被关闭,申请的内存空间会被释放。系统的这一特性称之为隐式回收系统资源,但是写程序中不要依赖这个特性,因为这是操作系统的特性,但是我们跑程序的时候基本上是在服务器上,服务器一般是24h开着的,这就意味着操作系统没有这个机会来给你回收

六、文件目录rwx权限差异、目录操作函数

ls -l 文件名时第一个出现的数字表示的大小是文件目录创建时路径的大小,我们也可以用readlink 目录文件来进行查看目录创建路径
在这里插入图片描述

文件、目录权限
在这里插入图片描述

目录操作函数:
在这里插入图片描述

在这里插入图片描述在这里插入图片描述
是隐藏了一个文件的,可以加个判断==

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值