linux学习笔记-读《Linux编程技术详解》(4-3)-文件和目录

修改文件的权限:

int chmod(const char *path, mode_t mode);

int fchmod(int fildes, mode_t mode);           

 

修改文件所有者和文件所有者所属的组:

         int chown(const char *path, uid_t owner, gid_t group);

         int fchown(int fd, uid_t owner, gid_t group);

         int lchown(const char *path, uid_t owner, gid_t group);

 

umask用于影响新建立文件的默认权限。当新建立一个文件或目录时,系统会根据umask的值来“剥夺”文件或目录的相应权限。如果umask022,则新建文件为777-022=755,但出于安全考虑,见创建的文件没有执行权限,即666-022=644,只有目录才是755umask函数用于修改进程的文件创建权限。umask往往与openmkdir函数或其他的系统调用搭配使用。默认时进程的umaskS_IWGRP|S_IWOTH(即八进制022)

 

一个inode节点可以存在任意数目的硬链接。在删除硬链接时,该inode节点上的数据不会受到影响。使用ln创建硬链接。硬链接文件和被连接的原文件指向同一inode,删除被链接的原文件后,硬链接文件依然指向同一个inode,此时数据依然存在,要删除存在硬链接的文件的数据时,必须删除原文件本身和所有的硬链接。硬链接局限:

l  只有文件才可以创建硬链接,目录不可以;

l  硬链接无法跨越文件系统(指不同分区上的文件)。

 

Linux系统中,使用更多的是符号链接。符号链接是一种专门的文件类型,与硬链接不同,符号链接通过名称来指向另一个文件。符号链接和原文件指向不同inode,且原文件消失,符号链接变得不可用。符号链接比硬链接更灵活,可以给任何类型文件系统建立符号链接。

创建硬链接:int link(const *oldpath, const char *newpath);

删除硬链接:int unlink(const char *pathname);

创建符号链接:int symlink(const char *oldpath, const char *newpath);

删除符号链接:int unsymlink(const char *oldpath, const char *newpath);                                               

 

opendir函数用于打开参数name指定的目录,并返回指向DIR结构体的指针。

原型: DIR *opendir(const char *name)

readdir函数用于获得某个打开目录下的具体内容,如文件名称、目录名称等。

原型:struct dirent *readdir(DIR *dir);

你可能感兴趣的:(linux学习笔记-读《Linux编程技术详解》(4-3)-文件和目录)