您的位置:首页 > 产品设计 > UI/UE

APUE学习笔记 - Chapter 4. Files and Directories

2010-08-17 19:47 357 查看
1.stat , fstat , lstatint stat( const char * restrict pathname , struct stat * restrict buf ) ; int fstat ( int filedes , struct stat* restrict buf ) ; int lstat ( const char * restrict pathname , struct stat * restrict buf ) ; 以上三个函数均可以获取文件的相关信息,以stat的结构返回。其中,stat使用文件名进行获取,而且会跟踪链接,而lstat会显示链接文件的信息,不会跟踪。而fstat则是通过已经打开的文件描述符来获得相关的文件信息。
 struct stat {
       mode_t    st_mode;      /* file type & mode (permissions) */
       ino_t     st_ino;       /* i-node number (serial number) */
       dev_t     st_dev;       /* device number (file system) */
       dev_t     st_rdev;      /* device number for special files */
       nlink_t   st_nlink;     /* number of links */
       uid_t     st_uid;       /* user ID of owner */
       gid_t     st_gid;       /* group ID of owner */
       off_t     st_size;      /* size in bytes, for regular files */
       time_t    st_atime;     /* time of last access */
       time_t    st_mtime;     /* time of last modification */
       time_t    st_ctime;     /* time of last file status change */
       blksize_t st_blksize;   /* best I/O block size */
       blkcnt_t  st_blocks;    /* number of disk blocks allocated */
     };
2.每个进程都有六个相关的用户ID值 :
real user IDreal group IDwho we really are
effective user IDeffective group IDsupplementary group IDsused for file access permission checks
saved set-user-IDsaved set-group-IDsaved by exec functions,是effective user ID和effective group ID的复制。
3.文件访问权限
S_IRUSRuser-read
S_IWUSRuser-write
S_IXUSRuser-execute
S_IRGRPgroup-read
S_IWGRPgroup-write
S_IXGRPgroup-execute
S_IROTHother-read
S_IWOTHother-write
S_IXOTHother-execute
在访问相关的文件时,我们必须对于该路径上的所有的文件夹拥有运行权限。如果我们拥有read的权限,则可以以只读形式打开文件,
如果 拥有write权限,则可以以写的形式打开文件。要在一个目录下新建或者删除文件,我们必须对该目录拥有写与运行权限。
4.访问检查
int access( const char * pathname , int mode ) ;
5.sticky bit
通过设定stick bit,在该文件第一次被运行后,text的内容被复制到交换区,下一次可以快速地运行。
6.文件系统
因为每个i-node都是要同一个文件系统内部进行编号的,所以ln(1)无法在不同的文件系统中进行链接操作。
而在同一个文件系统中时,mv与rm操作都不需要搬运数据。
对于每个cylinder group,可以表示成以下形式:
打开该文件,如果该文件的link count为0,则为将该文件删除。
每个inode都会包含如下信息:
文件类型,文件权限,文件大小, 文件数据的指针
stat中的信息大部分都是保存在inode之中。
7.链接
硬链接,均指向同一个i-node
符号链接,通过存储指向的路径名实现,可以实现跨文件系统与指向目录。
FunctionDoes not follow symbolic linkFollows symbolic link
access
chdir
chmod
chown
creat
exec
lchown
link
lstat
open
opendir
pathconf
readlink
remove
rename
stat
truncate
unlink
8.文件时间:
FieldDescriptionExamplels(1) option
st_atimelast-access time of file dataread-u
st_mtimelast-modification time of file datawritedefault
st_ctimelast-change time of i-node statuschmod, chown-c
access time 与modification time 均可以使用下面的函数进行修改:
int utime( const char * pathname , const struct utimbuf * times ) ;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: