open函数-数据流图到模块结构图的直接转换方法

时间:2024-07-12 01:23:27
【文件属性】:

文件名称:open函数-数据流图到模块结构图的直接转换方法

文件大小:5.82MB

文件格式:PDF

更新时间:2024-07-12 01:23:27

APUE UNIX

本章所说明的函数经常被称之为不带缓存的 I / O(u n b u ffered I/O,与将在第5章中说明的标 准I / O函数相对照)。术语——不带缓存指的是每个 r e a d和w r i t e都调用内核中的一个系统调用。 这些不带缓存的 I / O函数不是ANSI C的组成部分,但是是P O S I X . 1和X P G 3的组成部分。 只要涉及在多个进程间共享资源,原子操作的概念就变成非常重要。我们将通过文件 I / O 和传送给o p e n函数的参数来讨论此概念。并进一步讨论在多个进程间如何共享文件,并涉及内 核的有关数据结构。在讨论了这些特征后,将说明 d u p、f c n t l和i o c t l函数。 3.2 文件描述符 对于内核而言,所有打开文件都由文件描述符引用。文件描述符是一个非负整数。当打开 一个现存文件或创建一个新文件时,内核向进程返回一个文件描述符。当读、写一个文件时, 用o p e n或c r e a t返回的文件描述符标识该文件,将其作为参数传送给 r e a d或w r i t e。 按照惯例,UNIX shell使文件描述符0与进程的标准输入相结合,文件描述符 1与标准输出 相结合,文件描述符2与标准出错输出相结合。这是UNIX shell以及很多应用程序使用的惯例, 而与内核无关。尽管如此,如果不遵照这种惯例,那么很多 U N I X应用程序就不能工作。 在P O S I X . 1应用程序中,幻数 0、1、2应被代换成符号常数 S T D I N _ F I L E N O、S T D O U T _ F I L E N O和S T D E R R _ F I L E N O。这些常数都定义在头文件< u n i s t d . h >中。 文件描述符的范围是 0 ~ O P E N _ M A X (见表2 - 7 )。早期的U N I X版本采用的上限值是 1 9 (允许 每个进程打开2 0个文件),现在很多系统则将其增加至6 3。 S V R 4和4 . 3 + B S D对文件描述符的变化范围没有作规定,它只受到系统配置的 存储器的总量、整型字的字长以及系统管理员所配置的软性或硬性限制的约束。 3.3 open函数 调用o p e n函数可以打开或创建一个文件。 #include #include #include int open(const char *p a t h n a m e, int o f l a g,.../*, mode_t m o d e * / ) ; 返回:若成功为文件描述符,若出错为- 1 我们将第三个参数写为 . . .,这是ANSI C说明余下参数的数目和类型可以变化的方法。对


网友评论