随笔分类 - APUE
advanced programming in UNIX environment
摘要:深入解析条件变量 什么是条件变量(condition variables) 引用APUE中的一句话: Condition variables are another synchronization mechanism available to threads. These synchronizati
阅读全文
摘要:Unix/Linux的权限管理还是比较复杂的,别人说看高级环境编程得看2,3遍。我想这应该是在Linux有了一定基础上。我看的过程中觉得需要反复推敲,有些地方得翻来覆去看上5,6遍甚至更多,下面是自己的一些对Unix权限的理解,尽量翻译成了大白话。如果有不对的地方,欢迎讨论。 用户和组 现实生活中的
阅读全文
摘要:文件的时间 与文件相关的三个时间值: 访问时间:最后一次访问文件的时间。例如,cat命令会修改这个时间。 修改时间:文件内容最后一次被修改的时间。 状态更改时间:文件的i节点最后一次被修改的时间。例如,更改文件的访问权限、更改用户ID、更改链接数都会修改i节点。 注意: 系统并不维护对一个i节点的最
阅读全文
摘要:符号链接 符号链接的用途 符号链接是对一个文件的间接指针,它与前面介绍的硬连接不同,硬连接指向文件的i节点。引入符号链接是为了避开硬连接的一些限制: 硬链接通常要求链接和文件位于同一文件系统中。 只有超级用户才能创建指向目录的硬链接(在底层文件系统支持的情况下)。 而对于符号链接: 对符号链接以及它
阅读全文
摘要:名字 ftw,nftw 文件树遍历 概要 描述 nftw() nftw()遍历位于文件夹 dirpath 下面的目录树,为每个树的节点调用一次 fn() 。默认情况下,当前目录总是先于其包含的文件和子目录被处理(先序遍历)。 为了避免调用进程的文件描述符被用尽, nopenfd 指定了 nftw()
阅读全文
摘要:rename和renameat 看下面一段代码,让我们对rename做一下测试: 特殊情况 不能对.和..重命名。更确切的说,.和..不能出现在oldname和newname的最后部分。 如果oldname和newname引用同一个文件,则函数不做任何更改而成功返回。 注意: 如果newname已经
阅读全文
摘要:一个命令 mkfs 讲文件系统前先介绍一个用于创建文件系统的命令: mkfs 描述 mkfs用来在设备上创建一个Linux文件系统,这个设备通常情况下是一个硬盘分区。上面的device参数要么是设备名(例如:/dev/hda1,/dev/sdb2),或者为包含文件系统的一个普通文件。size参数为此
阅读全文
摘要:下面的几个chown函数可用于更改文件的用户ID和组ID。如果两个参数owner或group中的任意一个是 1,则对应的ID不变。 在符号链接下,lchown和fchownat(设置了AT_SYMLINK_NOFOLLOW标志)更改符号链接本身的所有者,而不是该符号链接所指向的文件的所有者。 看下面
阅读全文
摘要:4.7 函数access和faccessat 当一个进程使用了设置用户ID和设置组ID作为另一个用户(或者组)运行时,这时候有效用户(组)ID和实际用户(组)ID不一样,但进程仍然希望测试实际用户(组)ID的访问能力。这时候就可以使用access和faccessat。测试步骤同 "4.5节" 一样,
阅读全文
摘要:4.1 函数stat 函数stat返回与此命名文件有关的信息结构。下面的代码实现了一个工具,显示树形目录结构,需要加两个参数,一个为目录名,一个为显示目录的深度。 运行如下命令 生成一个a.out可执行文件,运行如下命令: 4.2 文件类型 文件类型包括以下几种: 1. 普通文件 2. 目录文件 3
阅读全文
摘要:第一次用markdown语法写博客,写出来的还比较整齐,感觉博客园对序号的支持不是很好,调了一会才有了比较满意的效果,还有有哪位知道使用markdown如何插入frame? 这边博客主要说了APUE中文件I/O的主要知识点,并且尝试写了一些代码,都列在了博客中。 3.1 文件描述符 对于内核而言,所
阅读全文
摘要:1. UNIX体系结构(UNIX Architecture) 调用内核的接口叫做系统调用(system call,图1.1中的阴影部分),普通函数库是建立在系统调用接口的基础之上。应用(application)可以同时使用函数库或者系统调用。Shell是一种特殊的应用,它为运行其他应用提供接口。总的
阅读全文