夫为剑者

示之以虚 开之以利 后之以发 先之以至

常用链接

统计

积分与排名

最新评论

linux上的c编程笔记-------文件系统的操作

linux的文件采用的是索引结构,文件存储在不连续的存储块中,这些块的块号记录于索引块中。索引块称为inode结构,inode结构中与用户有关的信息:
           mode   ------   文件的权限及类型
   link count   ------   包含本inode项的目录个数
        user id    ------   文件所有者的用户id
     group id    ------   文件所有者所在组的id
              size   ------   文件大小
access time   ------   文件上次被访问的时间
    mod time   ------   文件上次被修改的时间
    block list   ------   包含文件第一段的磁盘块号列表
indirect list   ------   包含文件其它内容(除第一段)的磁盘块号列表

文件类型记录在stat结构中的st_mode域中,可以用以下的宏来决定文件类型,每个宏的参数是stat结构中的st_mode值
S_ISREG()   ------   正规文件
S_ISDIR()   ------   目录文件
S_ISCHR() ------    字符设备文件
S_ISBLK() ------    块设备文件
S_ISFIFO()------    有名管道文件
S_ISLNK()------     符号链接文件
S_ISSOCK()----     套接字文件

顺序文件操作
        打开文件:
        #include <sys/types.h>
        #include <sys/stat.h>
        #include <fcntl.h>
        int open(const char* pathname,int oflag,.../*mode_t mode*/);
        正确返回:文件描述符
        错误返回:-1
        参数描述:
        pathname:待打开或创建的文件名
                oflag:如何打开文件,必须包含以下三个中的一个
                             O_RDONLY   ------   只读方式打开
                             O_WRONLY ------    只写方式打开
                             O_RDWR      -------    读写方式打开
                             还可以按位逻辑加( | )组合下列标志
                             O_APPEND        ------          每次写文件从文末开始
                             O_CREAT          ------           文件不存在则创建,必须带第三个参数mode设置新文件的访问方式
                             O_EXCL              ------          检查文件是否存在,以及不存在时创建文件的情况
                             O_TRUNC          ------          如果文件存在,而且以只写或读写方式打开,将文件长度截至0
                mode:如果用open创建文件就要使用,其用来规定文件所以者、用户组、其它用户的访问权限。逻辑加组合下列常量
                             <sys/stat.h>中定义
                             S_IRUSER         ------            文件所有者的读权限位
                             S_IWUSER       ------            文件所有者的写权限位
                             S_IXUSER        ------             文件所有者的执行权限位 
                             S_IRGRP           ------             文件用户组的读权限位
                             S_IWGRP         ------             文件用户组的写权限位
                             S_IXGRP          ------              文件用户组的执行权限位
                             S_IROTH         ------              文件其它用户的读权限位
                             S_IWOTH       ------               文件其它用户的写权限位
                             S_IXOTH        ------               文件其它用户的执行权限位
                             还可以用下列常量设置set _uid位和set_gid位:
                             S_ISUID
                             S_ISGID
                当一个进程代表你创建文件时,权限位由该进程相联系的umask值所修改,进程利用如下公式决定文件的实际权限位:
                             mode &(~umask);

posted on 2005-12-07 16:10 vivip 阅读(279) 评论(0)  编辑 收藏 引用 所属分类: 学习笔记


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理