这算是在博客园写的第一篇文章啊,之前都在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)的更多相关文章

  1. 《APUE》第四章笔记(1)

    1.引言 本章介绍文件系统的特征和文件的性质.从stat函数开始,逐个说明stat结构的每一个成员以了解文件的所有属性.在此过程中,还将会说明修改这些属性的各个函数,并更详细地查看UNIX文件系统的结 ...

  2. apue第四章学习总结

    apue第四章学习总结 4.1.若以stat函数去替换lstat函数,会发生: 原来的目录路径: $:~/workspace/apue2/include$ ls -l apue.h abc lrwxr ...

  3. #Python编程从入门到实践#第四章笔记

    #Python编程从入门到实践#第四章笔记   操作列表 ​​​1.遍历列表 使用for循环,遍历values列表 for value in values: print(value) 2.数字列表 使 ...

  4. 《APUE》第四章笔记(2)

    下面介绍对stat结构的各个成员的操作函数. 先贴个stat结构的图: access函数: #include <unistd.h> int access(const char *pathn ...

  5. C#语言和SQL Server第十三 十四章笔记

    十三章  使用ADO.NET访问数据库 十四章使用ADO.NET查询和操作数据库 十三章:                                                       ...

  6. linux第四章笔记

    第四章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间.进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统. 最大限度利用处理器时间的原则:只要有可以执行 ...

  7. 《APUE》第四章笔记(3)

    文件系统 首先我们应该知道一个磁盘可以划分为多个分区,而每个分区就可以包含一个文件系统.UNIX的文件系统是这样的: 而我们主要关心的是i节点和数据块.i节点是固定长度的记录项,它包含有关文件的大部分 ...

  8. Vue2.5开发去哪儿网App 第四章笔记 上

    一 .  组件细节知识点 1.  解决组件在h5中编码规范 例如 : table , ul , ol  等等 <table> <tbody> <row></r ...

  9. core java 第四章笔记

    import java.util.*; public class Employee { private static int nextid = 1; private String name; priv ...

随机推荐

  1. c++聪聪看书(满分代码)

    聪聪是一个善良可爱.睿智聪慧的好孩子.聪聪喜欢看书,这一天她在看一本书时看到了这样一个问题:给你一个正整数n,你要将它分成若干个自然数Ai的和的形式,并且使得这若干个自然数Ai的乘积尽量大,并输出最大 ...

  2. TIOBE Index for January 2016(转载)

    Java has won the TIOBE Index programming language award of the year. This is because Java has the la ...

  3. centos下安装xfce+vnc

    首先安装桌面环境,我选择的是xfce,轻量级桌面,小巧实用不占太多内存,(占用内存方面,xfce少于kde,kde少于gnome). 安装xfce桌面一开始我以为第三方的软件源如rpmforge等应该 ...

  4. Java Annotations: Explored &amp; Explained--转载

    原文地址:http://www.javacodegeeks.com/2012/08/java-annotations-explored-explained.html One of the many w ...

  5. iOS网络层架构设计分享

    前言 前些天帮公司做了网络层的重构,当时就想做好了就分享给大家,后来接着做了新版本的需求,现在才有时间整理一下. 之前的网络层使用的是直接拖拽导入项目的方式导入了AF,然后还修改了大量的源码,时隔2年 ...

  6. [LeetCode#84]Largest Rectangle in Histogram

    Problem: Given n non-negative integers representing the histogram's bar height where the width of ea ...

  7. Linux数据备份

    今天需要用到备份网站,写了个脚本,备份了mysql和redis数据. #!/bin/bash BACKDIR="/home/tan/getll_backup" if [ ! -d ...

  8. 1455:An Easy Problem

    传送门:http://noi.openjudge.cn/ch0406/1455/ /-24作业 //#include "stdafx.h" #include<bits/std ...

  9. SSM-Spring-20:Spring中事务基础

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 事务 事务是什么? 我记得当初的百度百科上讲,事务是执行的最小逻辑单元,它们要么都执行,要么都不执行 (同生共 ...

  10. SYN-flood攻击

    原理:当TCP三次握手进行第一次握手时,客户端向服务端发送SYN请求报文,第二次握手服务端会返回一个SYN+ACK的一个确认报文,syn-flood攻击就发生在第三次握手,当客户端不去回应服务端的SY ...