手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网站运营>建站经验>列表

第三章--文档I/O

来源:互联网 作者:west263.com 时间:2008-04-16
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!


么影响。



对于ANSI C原型,他用省略号表示其余参数。但是,通常只有另外一个参数,他常

常是指向

一个变量或结构的指针。

在此原型中,我们表示的只是ioctl函数本身所需要的头文档。通常,还需要另外

的设备专

用头文档。例如,在POSIX1所说明的基本操作之外,终端ioctl都需要头文档<t

ermiosh

。

现在,ioctl的主要用途是什么呢?我们将43 BSD的ioctl操作分类示于图37中

。



图37〓43 BSD ioctl操作

磁带操作使我们能够在磁带上写一个文档结束标志,反绕磁带,越过指定个数的文

件或记录

等等,用本章中的其他函数(read,write,lseek等)都难于表示这些操作,所以,用

ioctl是

对这些设备进行操作的最容易方法。

在1112节中存取和配置终端窗口时,在124中说明流系统时,连同在197节中

述及仿终

端的高级功能时,我们都将使用ioctl。

315〓/dev/fd

比较新的系统都提供名为/dev/fd的目录,其目录项是名为0,1,2等的文档。打开

文档/dev

/fd/n等效于复制描述符n(假定描述符n是打开的)。

/dev/fd这种特征是由Tom Duff研发的,他首先出现在research Unix System的第

8版中,SV

R4和43 BSD支持这种特征。他不是POSIX1的组成部分

在函数中调用

fd=open("/dev/fd/0",mode);

大多数系统忽略所指定的mode,而另外一些则需要mode是所涉及的文档(在我们这

里则是标

准输入)原先打开时所使用的mode的子集。因为上面的打开等效于:

fd=dup(0);

描述符0和fd共享同一文档表项(图34)。例如,若描述符0被只读打开,那么我们

也只对fd

进行读操作。即使系统忽略打开方式,并且下列调用成功:

fd=open("/dev/fd/0",O[CD#*2]RDWR);

我们仍然不能对fd进行写操作。

我们也能够用/dev/fd作为路径名参数调用creat,或调用open,并同时指定O[CD#

*2]CREAT

。这就允许调用creat的程式,假如路径名参数是/dev/fd/1等仍能工作。

某些系统提供路径名/dev/stdin,/dev/stdout和/dev/stderr。这些等效于/dev/f

d/0,/dev/

fd/1和/dev/fd/2。

/dev/fd文档主要由shell使用,这允许程式以对待其他路径名相同的方式使用路径

名参数来

处理标准输入和标准输出。例如,cat(1)程式将命令行中的一个单独的'-'特别解

释为一

个输入文档名,该文档指的是标准输入。例如,

filter file2 |cat file1-file3|lpr

首先cat读file1,接着读其标准输入(也就是filter file2命令的输出),然后读f

ile3,如

若支持/dev/fd,则能够删除cat对一的特别处理,于是我们就可键入下列命令行:



filter file2 |cat file1 /dev/fd/0 file3 |lpr

在命令行中用'-'作为一个参数特指标准输入或标准输出已由很多程式采用。但是

这会带

来一些问题,例如若用'-'指定第一个文档,那么他看来就象是开始了另一个命令

行的选

择项。/dev/fd则提高了文档名参数的一致性,也更加清楚。

316〓摘要

本章说明了传统的Unix I/O函数。因为每个read,write都因调用系统调用而进入系

统核,所

以称这些函数为不带缓存的I/O函数。在只使用read和write情况下,我们观察了不

同I/O长

度,对读一个文档所需时间的影响。

在说明多个进程对同一文档进行添写操作连同多个进程创建同一文档时,本章介绍

了原子操

作。我们也介绍了系统核用来共享打开文档信息的数据结构。在本书的稍后部分我

们还将涉

及这些数据结构。

我们也说明了ioctl和fcntl函数。在第十二章中,还将使用这两个函数,将ioctl

用于流I/O系统,将fcntl用于记录锁。

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!