您的位置:首页 > 运维架构 > Linux

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

2010-04-07 22:02 218 查看
修改文件的权限:
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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息