POSIX规范-unbuffered I/O (文件I/O)

一、POSIX

POSIX 表示可移植操作系统接口(Portable Operating System Interface ,缩写为 POSIX ),X则表明其对Unix API的传承。

POSIX标准定义了操作系统应该为应用程序提供的接口标准,是IEEE为要在各种UNIX操作系统上运行的软件而定义的一系列API标准的总称。

POSIX标准意在期望获得源代码级别的软件可移植性。换句话说,为一个POSIX兼容的操作系统编写的程序,应该可以在任何其它的POSIX操作系统(即使是来自另一个厂商)上编译执行。

二、Linux文件类型

Linux文件类型常见的有:普通文件(-)、目录(d)、字符设备文件(c)、块设备文件(b)、符号链接文件(l)、管道文件(p)和套接口(s)。

三、虚拟文件系统

“什么是文件系统”。文件系统是对一个存储设备上的数据和元数据进行组织的机制。

Linux文件系统由两层结构构成:虚拟文件系统(VFS) 和 各种不同的具体的文件系统(Ext3 FAT32等)。

VFS把各种具体的文件系统抽取出来,形成一个抽象层,对用户而言屏蔽了底层文件系统的实现细节和差异。

VFS位于用户程序和具体的文件系统之间,对用户程序提供了标准的文件系统调用接口。

VFS不仅接受用户层的系统调用open()read()write()close()等,还支持多种具体文件系统之间的互访,

接受内核其他子系统的操作请求,如:内存管理和进程调度。

$ cat /proc/filesystems 可以查看系统支持的文件系统。

 四、文件描述符

linux哲学之一就是一切皆文件。所以I/O设备也被当作文件来处理,内核是如何区分和引用特定的文件?那就是文件描述符(file descriptors)

文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。

当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。在程序设计中,一些涉及底层的程序编写往往会围绕着文件描述符展开.

一个进程启动会打开3个流:stdin、stdout和stderr。这3个流分别对应文件描述符0、1和2。

POSIX 定义了 STDIN_FILENO、STDOUT_FILENO 和 STDERR_FILENO 来代替 0、1、2。这三个符号常量的定义位于头文件 unistd.h。

 

 

posted @ 2014-06-22 09:49  CloudPing  阅读(649)  评论(0编辑  收藏  举报