Unix环境高级编程读书笔记(2.1)

1、Linux中硬链接和软链接
在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个唯一的inode号,文件属性保存在具体的数据块
里,在访问文件时,索引结点被复制到内存中,从而实现文件的快速访问。

硬链接:
说白了就是一个指针,指向文件索引结点,系统并不为它重新分配inode,可以用ln 命令来建立硬链接;
创建硬链接后,连接数均增加1,硬链接和被链接是同一个文件的两个名字,它们具有同样的索引结点和文件属性,为被链接文件创建一个
硬链接,就是为被链接文件在当前目录上建立一个新指针;
链接数是同时减一,只有将所有执行文件内容的指针,也即链接数减为0时,内核才会把文件内容从磁盘上删除。

硬链接的不足之处:
1、不可以在不同文件系统的文件间建立链接;
2、只有超级用户才可以为目录建立硬链接。

软链接:
软链接没有任何文件系统的限制,任何用户可以创建指向目录的符号链接,它具有更大的灵活性,甚至可以跨越不同机器、不同网络对文件
进行连接;建立软链接,ln -s

硬链接&软链接
1)硬链接原文件&链接文件公用一个inode号,说明它们是同一个文件,软链接原文件&软链接文件拥有不同的inode号,表明它们是两个不
同的文件;
2)在本质上,硬链接文件和原文件具有平等关系
3)软链接的链接数目不会增加;
4)文件大小不一样,硬链接文件显示的大小和原文件是一样的,软链接的大小是原文件文件名的长度;
5)建立软链接就是建立了一个新文件,当访问软链接文件时,系统就会发现它是一个软链接文件,它读取软链接文件找到真正要访问的文件。

2、获取文件信息
int stat(const char*path,struct stat*buf);//根据path路径,获取信息
int lstat(const char*path,struct stat*buf);//功能和stat类似,但如果path指向的是一个符号链接,返回的是该符号链接的信息,而不
是其所指向文件的信息
int fstat(int fd,struct stat*buf);//功能和stat类似,第一参数为文件描述符

3、文件类型(7个)
普通文件-、目录d、软链接l、字符设备c、块设备b、管道p、套接字s

4、access faccessat


int access(const char*pathname,int mode);//检测进程对文件的操作权限;mode的取值:F_OK文件是否存在;R_OK、W_OK、X_OK文件

是否可读、写、执行


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值