当前位置: 首页 >> 应用软件 >> 网络相关 >> Apache中的文件与目录(1)
 

Apache中的文件与目录(1)

作者:张中庆flydish1234 at sina.com.cn      来源:     发表时间:2006-03-06     浏览次数:      字号:    

4.1 文件概述
文件I/OUnix下占据着非常重要的地位,曾有一句经典语句绝对可以说明fileUnix下的重要性, "In UNIX, everything is a file"APR就是本着这个思想对Unix文件I/O进行了再一次的抽象封装,以提供更为强大和友善的文件I/O接口。
APR File I/O源代码的位置在$(APR_HOME)/file_io目录下针对不同类型的操作系统,file_io下又进一步细分为四个目录:netwareos2unixwin32。每个目录中又包含多个.c文件,每个.c文件对应一种文件操作,比如
open.c -- 封装了文件的打开、关闭、改名和删除等操作
readwrite.c -- 顾名思义,它里面包含了文件的读写操作;
pipe.c -- 包含了pipe相关操作。
还有许多这里不多说,由于文件I/O操作复杂,我们下面将仅挑出最常用的文件I/O操作进行分析。
4.2 APR文件定义
正如第一章所言,APR中为了移植方便,通常会使用自定义的常量来代替原有系统中存在的常量,并提供它们之间的相互转换,这一点对于文件也不例外。APR几乎对文件中所用到的所有的常量都进行了重新定义,包括文件权限、文件打开方式、文件类型定义等等。这部分我们集中了解APR中的这些定义。在后面的部分将很快就会使用到。
4.2.1文件类型
尽管在Unix中,一切皆文件,但是文件又分为不同类型:
1)、普通文件(regular file)。这是最常见的文件类型。UNIX中使用S_IFREG描述该类文件,而APR中使用APR_REG描述。
2)、目录文件(directory file)。这种文件包含了其他文件的名字以及指向与这些文件有关信息的指针。UNIX中使用S_IFDIR描述,在APR中使用APR_DIR描述。
3)、字符特殊文件(character special file)。这类文件通常对应系统中某些类型的设备。UNIX中使用S_IFCHR描述,而APR中使用APR_CHR描述。
4)、块特殊文件(block special file)。这类文件典型的用于磁盘设备。系统中的所有设备或者是字符特殊文件,或者是块特殊文件。UNIX中使用S_IFBLK描述,而APR中使用APR_BLK描述该类文件。
5)FIFO文件。这类文件通常用于进程间通信,有时也称之为管道。APR中使用APR_PIPE描述该类文件。
6)、套接字描述文件。这类文件用于进程间的网络通信。UNIX中使用S_IFSOCK描述,而APR中使用APR_SOCK描述该类文件。
7)、链接文件。最后一种文件类型就是链接文件。这种文件通常仅仅指向另外一个文件。UNIX中使用S_IFLNK描述,而APR中使用APR_LNK描述该类文件。
综合上面的内容,APR定义了枚举类型apr_filetype_e来描述所有的Unix文件类型。
typedef enum {
    APR_NOFILE = 0,     /**< no file type determined */
    APR_REG,            /**< a regular file */
    APR_DIR,            /**< a directory */
    APR_CHR,            /**< a character device */
    APR_BLK,            /**< a block device */
    APR_PIPE,           /**< a FIFO / pipe */
    APR_LNK,            /**< a symbolic link */
    APR_SOCK,           /**< a [unix domain] socket */
    APR_UNKFILE = 127   /**< a file of some other unknown type */
} apr_filetype_e;
为了实现APR定义和UNIX定义的转换,APR中通过函数filetype_from_mode实现从系统定义到APR定义的转换。该函数定义在filestat.c中:
static apr_filetype_e filetype_from_mode(mode_t mode)
{
    apr_filetype_e type;
    switch (mode & S_IFMT) {
    case S_IFREG:
        type = APR_REG; break;
    case S_IFDIR:
        type = APR_DIR; break;
    ……
    }
}
4.2.2文件访问权限
UNIX系统中,每一个文件都对应三组不同的访问权限,即用户存取权限、组用户存取权限和其余用户存取权限。在UNIX中,通常用S_IXXXX常量来描述这些访问权限。APR中则使用APR_FPROT_XXXX来进行替代,对应的关系如下表所示:

[1] [2] [3] [4] [5]

责任编辑 webmaster

 
 
 
最新文章
 

普通文章  搜索引擎Larbin结构分析
精华文章  十大开源CRM
普通文章  完整快递查询网站整站源代码
普通文章  GOOGLE网站导航源码免费下载
普通文章  GIS开源程序收集
精华文章  成功安装LDAP指南
普通文章  mozilla 源码编译简介
精华文章  nmap使用方法
普通文章  Apache性能测试工具
普通文章  服务器网页缓存的深入分析
普通文章  理解tty-终端设备
精华文章  Snort - 轻型的IDS工具
普通文章  Firefox插件开发-技术和开发网站
普通文章  Apache中URL Rewrite技术的实现
普通文章  Apache性能优化技巧

推荐文章
 
 
  热点文章
 
 
 
评论更多>>
 
 
 
发表
 
姓名: QQ:
性别: MSN:
E-mail: 主页:
评分: 1 2 3 4 5
评论内容:
验证码:
  
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。
  •