<<UNIX环境高级编程>>学习总结——第四章:文件和目录
2013-08-06 16:42
615 查看
本章的中心就是使用三个stat函数所返回的结构体,对里面每一项都进行了相关操作函数的说明。
首先使用stat,fstat,lstat三个函数,返回结构体。然后本章依次对其中每一项进行探讨。
mode_t st_mode:1,文件类型,用文件类型宏去判断,例如----(S_ISREG(buf.st_mode))的真假判定是否为普通文件。其中宏有:S_ISREG(),S_ISDIR(),S_ISCHAR(),S_ISBLK(),S_ISFIFO(),S_ISLNK(),S_ISSOCK()。
2,用S_ISUID(),S_ISGID()测试设置用户ID和设置组ID。
3,文件访问权限,这个在就是执行ls-l后显示的权限位。
新文件和目录的权限:新文件的用户ID是进程的有效用户ID,而组ID要么是进程有效组ID,要么是所在目录组ID。
4,使用access函数对文件权限进行测试,int access(const char *pathname,int mode);其中mode取值:R_OK,W_OK,X_OK,F_OK;
5,umask,暂时设置权限掩码,有作用域的。
6,给出对于上述权限位的操作函数,int chmod(const char *pathname,mode_t mode)和int fchmod(int filed,mode_t mode)---------------前者在指定文件上操作,后者对已经打开的文件进行操作。例如:chmod("foo",(statbuf.st_mode & a) | b) 其中的statbuf就是使用stat函数所返回的结构体,a和b可取该小节表格中的所有值。
7,黏住位,当程序执行一次后,正文依旧保存在交换分区中。
uid_t st_uid和gid_t st_gid:和stat 函数差不多,分成三个。chown,fchown,lchown。大概这三个函数都不是随便使用的,为了系统权限安全。
off_t st_size,blksize_t st_blksize和blkcnt_t st_blocks:分别是以字节为单位的文件长度,对文件适合I/O的块长度,实际分配的512字节块的数量。相关操作函数为戳段文件函数:truncate,ftruncate。
nlink_t st_nlink:文件的链接数。4.14中介绍了文件系统基本结构,然后引出普通文件链接和目录文件链接。接着介绍相关操作函数,link,unlink,remove,rename。分别对创建链接,删除链接,解除链接,以及更名。其中也需要对文件具有一定权限。
符号链接:与前者的链接不一样的是,符号链接指向文件名,而硬链接指向i-node;相关的处理函数为symlink,readlink.前者创建符号链接,后者用于读链接的位置。
time_t st_atime,time_t st_mtime,time_t st_ctime: 接着就是文件时间,分别为最后访问时间,最后修改时间,最后i节点改动时间。对于前两者给予了utime函数进行修改,函数使用数据结构为:struct utimbuf {
time_t st_atime;
time_t st_mtime;
};
剩下的内容就是对目录的操作:创建目录(mkdir,rmkdir),读目录(opendir,readdir,rewinddir,closedir,telldir,seekdir),更改进程当前目录(chdir,fchdir,getcwd)。
dev_t st_dev,dev_t st_rdev:使用major(st_dev)和minor(st_dev)返回文件系统主次设备号。当对象是字符特殊文件和块特殊文件的时候,才用major(st_rdev)和minor(st_rdev)返回实际设备的设备号。
首先使用stat,fstat,lstat三个函数,返回结构体。然后本章依次对其中每一项进行探讨。
mode_t st_mode:1,文件类型,用文件类型宏去判断,例如----(S_ISREG(buf.st_mode))的真假判定是否为普通文件。其中宏有:S_ISREG(),S_ISDIR(),S_ISCHAR(),S_ISBLK(),S_ISFIFO(),S_ISLNK(),S_ISSOCK()。
2,用S_ISUID(),S_ISGID()测试设置用户ID和设置组ID。
3,文件访问权限,这个在就是执行ls-l后显示的权限位。
新文件和目录的权限:新文件的用户ID是进程的有效用户ID,而组ID要么是进程有效组ID,要么是所在目录组ID。
4,使用access函数对文件权限进行测试,int access(const char *pathname,int mode);其中mode取值:R_OK,W_OK,X_OK,F_OK;
5,umask,暂时设置权限掩码,有作用域的。
6,给出对于上述权限位的操作函数,int chmod(const char *pathname,mode_t mode)和int fchmod(int filed,mode_t mode)---------------前者在指定文件上操作,后者对已经打开的文件进行操作。例如:chmod("foo",(statbuf.st_mode & a) | b) 其中的statbuf就是使用stat函数所返回的结构体,a和b可取该小节表格中的所有值。
7,黏住位,当程序执行一次后,正文依旧保存在交换分区中。
uid_t st_uid和gid_t st_gid:和stat 函数差不多,分成三个。chown,fchown,lchown。大概这三个函数都不是随便使用的,为了系统权限安全。
off_t st_size,blksize_t st_blksize和blkcnt_t st_blocks:分别是以字节为单位的文件长度,对文件适合I/O的块长度,实际分配的512字节块的数量。相关操作函数为戳段文件函数:truncate,ftruncate。
nlink_t st_nlink:文件的链接数。4.14中介绍了文件系统基本结构,然后引出普通文件链接和目录文件链接。接着介绍相关操作函数,link,unlink,remove,rename。分别对创建链接,删除链接,解除链接,以及更名。其中也需要对文件具有一定权限。
符号链接:与前者的链接不一样的是,符号链接指向文件名,而硬链接指向i-node;相关的处理函数为symlink,readlink.前者创建符号链接,后者用于读链接的位置。
time_t st_atime,time_t st_mtime,time_t st_ctime: 接着就是文件时间,分别为最后访问时间,最后修改时间,最后i节点改动时间。对于前两者给予了utime函数进行修改,函数使用数据结构为:struct utimbuf {
time_t st_atime;
time_t st_mtime;
};
剩下的内容就是对目录的操作:创建目录(mkdir,rmkdir),读目录(opendir,readdir,rewinddir,closedir,telldir,seekdir),更改进程当前目录(chdir,fchdir,getcwd)。
dev_t st_dev,dev_t st_rdev:使用major(st_dev)和minor(st_dev)返回文件系统主次设备号。当对象是字符特殊文件和块特殊文件的时候,才用major(st_rdev)和minor(st_rdev)返回实际设备的设备号。
相关文章推荐
- <<UNIX环境高级编程>>学习总结——第一章:UNIX基础知识
- <<UNIX环境高级编程>>学习总结——第二章:UNIX标准化及实现
- <<UNIX环境高级编程>>学习笔记之环境搭建
- UNIX环境高级编程学习之第四章文件和目录-用C实现Shell中的"ls -l"功能
- <<UNIX环境高级编程>>apue.h头文件的配置
- Unix环境高级编程——第四章 目录和文件
- <<UNIX环境高级编程>>之第三章理解
- <<UNIX环境高级编程>>之第七章理解
- UNIX环境高级编程学习之第六章系统数据文件和信息-修改第四章实现的Shell的“ls -l”功能
- <<UNIX环境高级编程>>之第一章理解
- <<UNIX环境高级编程>>之第四章理解
- <<UNIX环境高级编程>>之第六章理解
- unix环境高级编程学习1-unix文件和目录
- <<UNIX环境高级编程>>之第五章理解
- <<UNIX环境高级编程>>之第十章理解
- <<UNIX环境高级编程>>之第二章理解
- UNIX环境高级编程学习——列出一个目录中的所有文件
- <UNIX环境高级编程>文件共享及fork函数
- UNIX环境高级编程-第4章- 文件和目录 - 二
- unix环境高级编程-文件和目录-stat,fstate,lstat函数