《APUE》第四章笔记(4)
这算是在博客园写的第一篇文章啊,之前都在csdn写(虽然才写了几篇,因为开通也没多少天。。),还是稍微期待下吧。我写博客的主要意图是一来能够记录下来自己所学过的东西,二来也想能够跟大家交流,能够得到更多的意见,来使自己进步。我现在是个大学生,学到的东西还真没多少,所以写出来的东西没营养望能理解。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
创建硬链接和解除硬链接的函数
link和unlink函数:
#include <unistd.h>
int link(const char *existingpath, const char *newpath);
返回值:成功返回0,出错返回-1
此函数创建一个新的目录项newpath,它引用现有的文件existingpath。若newpath已经存在,则返回出错。只创建newpath中的最后一个分量,路径中的其他部分应当已经存在。
只有超级用户才支持创建一个指向目录的硬链接,因为有可能创建不当的话会引起循环,然后崩溃(第一版的作者试过,文件系统就崩溃了)。因此很多文件系统实现不允许对于目录的硬链接。(我刚刚在自己的Linux系统上试过,真的是不能够对目录来进行硬链接)
为了删除对一个现有的目录项,可以调用unlink函数。
#include <unistd.h>
int unlink(const char *pathname);
返回值:成功返回0,出错返回-1
此函数删除目录项,并将由pathname所引用的文件的链接计数减1.如果出错,则不对该文件做任何修改。
为了解除对文件的链接,必须对包含该目录项的目录具有写和执行的权限。
符号链接
符号链接跟硬链接最大的区别就是修改了硬链接,其文件内容会改变。而符号链接只是个指向一个文件的间接指针。符号链接这种文件类型保存的仅仅是文件名。当使用以文件名作为参数的函数时,应当了解函数是否能处理符号链接。也就是该函数能否跟随符号链接到达它所链接的文件。下面列出了本章所说明的各个函数能否处理符号链接。
symlink和readlink函数
symlink函数创建了一个符号链接。
#include <uinstd.h>
int symlink(const char *actualpath, const char *sympath);
返回值:成功返回0,出错返回-1
创建符号链接时,并不要求actualpath已经存在,而且两个参数也并不需要在同一个文件系统汇中(硬链接要)。
因为open函数跟随符号链接,所以需要一种方法来打开链接本身,并读链接中的名字。readlink函数提供了这种功能。
#include <unistd.h>
ssize_t readlink(const char *pathname, char *buf, size_t bufsize);
返回值:成功返回读到的字节数,出错返回-1
此函数组合了open、read、和close的所有操作。如果此函数执行成功,则它返回读入buf的字节数。在buf中返回的符号链接的内容不以NULL字符终止。
文件的时间
前两个是对于文件的内容的,第三个是对于文件的状态的,即有关i节点的。
目录是包含目录项(文件名和相关i节点编号)的文件,增加、删除和修改目录项会影响到与其所在目录相关的三个时间。下面给出各种函数对时间的作用:
用mkdir函数创建目录,用rmdir函数删除目录
#include <sys/stat.h>
int mkdir(const char *pathname, mode_t mode);
返回值,成功返回0,出错返回-1
其中,dot和dot dot是自动创建的,所指定的文件访问权限mode由进程的文件模式创建屏蔽字修改。
用rmdir函数可以删除一个空目录。空目录是只包含dot和dot dot这两项的目录。
#include <unistd.h>
int rmdir(const char *pathname);
返回值:成功返回0,出错返回-1
《APUE》第四章笔记(4)的更多相关文章
- 《APUE》第四章笔记(1)
1.引言 本章介绍文件系统的特征和文件的性质.从stat函数开始,逐个说明stat结构的每一个成员以了解文件的所有属性.在此过程中,还将会说明修改这些属性的各个函数,并更详细地查看UNIX文件系统的结 ...
- apue第四章学习总结
apue第四章学习总结 4.1.若以stat函数去替换lstat函数,会发生: 原来的目录路径: $:~/workspace/apue2/include$ ls -l apue.h abc lrwxr ...
- #Python编程从入门到实践#第四章笔记
#Python编程从入门到实践#第四章笔记 操作列表 1.遍历列表 使用for循环,遍历values列表 for value in values: print(value) 2.数字列表 使 ...
- 《APUE》第四章笔记(2)
下面介绍对stat结构的各个成员的操作函数. 先贴个stat结构的图: access函数: #include <unistd.h> int access(const char *pathn ...
- C#语言和SQL Server第十三 十四章笔记
十三章 使用ADO.NET访问数据库 十四章使用ADO.NET查询和操作数据库 十三章: ...
- 《HALCON数字图像处理》第四章笔记
目录 第四章 HALCON数据结构 HALCON Image图像 图像通道 HALCON Region区域 Region的初步介绍 Region的点与线 Region的行程 Region的区域特征 H ...
- linux第四章笔记
第四章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间.进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统. 最大限度利用处理器时间的原则:只要有可以执行 ...
- 《APUE》第四章笔记(3)
文件系统 首先我们应该知道一个磁盘可以划分为多个分区,而每个分区就可以包含一个文件系统.UNIX的文件系统是这样的: 而我们主要关心的是i节点和数据块.i节点是固定长度的记录项,它包含有关文件的大部分 ...
- Vue2.5开发去哪儿网App 第四章笔记 上
一 . 组件细节知识点 1. 解决组件在h5中编码规范 例如 : table , ul , ol 等等 <table> <tbody> <row></r ...
随机推荐
- The Kernel Newbie Corner: Kernel Debugging Using proc "Sequence" Files--Part 1
转载:https://www.linux.com/learn/linux-career-center/37985-the-kernel-newbie-corner-kernel-debugging-u ...
- 来自 Github 的图形化 Git 使用教程
转载:http://www.linuxeden.com/html/news/20120628/126451.html 这是来自 Github 上对 Git 常用操作进行简短介绍以及可视化图形操作说明的 ...
- iOS 超 Easy 实现 渐变导航栏
接着上周的项目, 在上周我别出心裁的在自定义TabbarController中加入了自定义转场动画, 受到了大家广泛的喜爱, 再次表示感激, 今天我们继续实现LifestyleViewControll ...
- Windows 之 删除保存的共享凭据(用户名和密码)
当我们在访问Windows共享文件夹或者NAS网络共享盘的时候,Windows会提示输入访问共享所需要的用户名和密码,如果我们勾选了“记住我的凭据”,Windows 就会将认证凭据保存到计算机中,以方 ...
- ios - 带动画圆形旋转的进度条
#import <UIKit/UIKit.h> @interface TJCircleProgressView : UIView /** * 图标 */ @property(nonatom ...
- TCP/IP协议原理与应用笔记25:网际协议(IP)之 数据报(Datagram)
1. 数据报(Datagram)格式: 2. 长度字段 (1)首部长度字段, bits 以 4 字节(即32bits)为单位 取值:5~15(即首部长度为20 ~ 60 bytes) (2)总长度字段 ...
- 沈逸老师PHP魔鬼特训笔记(7)--我叫什么名字
一.生成文件夹. mkdir():--新建目录 bool mkdir ( string $pathname [, int $mode = 0777 [, bool $recursive = false ...
- 【Shell脚本学习16】Shell if else语句
if 语句通过关系运算符判断表达式的真假来决定执行哪个分支.Shell 有三种 if ... else 语句: if ... fi 语句: if ... else ... fi 语句: if ... ...
- 关于java设计模式与极品飞车游戏的思考
------- android培训.java培训.期待与您交流! ---------- 对像我一样正在学习java的人来讲,对设计模式的学习是个很重要的环节.而我们在学习设计模式时,不仅仅应该知道它们 ...
- javaweb学习总结二十六(response对象的用法二 下载文件)
一:浏览器打开服务器上的文件 1:读取服务器上面的资源,如果在web层,可以直接使用servletContext,如果在非web层 可以使用类加载器读取文件 2:向浏览器写数据,实际上是把数据封装到r ...