您的位置:首页 > 编程语言

<<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)返回实际设备的设备号。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: