修改文件的权限:
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的值来“剥夺”文件或目录的相应权限。如果umask是022,则新建文件为777-022=755,但出于安全考虑,见创建的文件没有执行权限,即666-022=644,只有目录才是755。umask函数用于修改进程的文件创建权限。umask往往与open、mkdir函数或其他的系统调用搭配使用。默认时进程的umask为S_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);