LINUX开发学习日记(第一部)(UNIX环境高级编程)

王朝system·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

/*申明:本学习日记是参照《UNIX环境高级编程》而写 *。

由于第一章和第二章主要讲解UNIX(LINUX)系统的一些基础知识和一些技术标准之间的差异,所以在这里我就不再浪费时间和精力了。如果有兴趣可以自己看看。

本章主要讲解LINUX系统中的无缓冲文件(unbuffered)I/O操作的相关函数和用法。最后为了大家能够灵活的掌握这些函数的用法,并给出了少量的上机练习题。

首先,我们从整体了解一下文件操作的大致流程:打开(open)或创建(create)文件-->读(read)、写(write)、重新(lseek)定位文件-->关闭文件(close)。那么在无缓冲文件(unbuffered)I/O操作中,我们用什么来标志我们打开的文件------文件描述符(file descriptor)。

1。文件描述符(file descriptor)

文件描述符是系统内核分配给打开的文件的最小非负整数。当我们打开(open)一个现存文件或创建(create)一个新文件时,内核向进程返回一个文件描述符。然后将其作为参数传送给r e a d、w r i t e、lseek等这些需要对该文件进行操作的函数。

文件描述符的范围在<unistd.h>头文件中通过OPEN_MAX来限制,新的LINUX系统中,其值一般为63,即一个进程最多能同时打开64个文件。同时在该文件中还定义了STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO三个常数,其值分别为0、1、2;它们分别代表标准输入设备(一般为键盘)、标准输出设备(一般为显示器)和标准错误输出设备(一般也为显示器)。

2。文件操作的函数

1>.打开文件函数

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

int open(const char pathname, int oflag ,....../* mode_t mode */)

返回:若成功为int型的文件描述符,若出错为- 1

pathname :你要打开文件所在的目录(包括文件名)。

oflag :指定打开文件的方式的参数,可以通过单个以下的值或它们的“或”组合。最主要有三个:只读(O_RDONLY)、只写(O_WRONLY)、读写(O_RDWR);另外还有一些其他的控制参数如O_APPEND、O_CREAT等等,这些参数的具体含义和用法可以在LINUX中通过man open来获得。它们都是定义在头文件<fcntl.h>中。

mode :是一个可选的参数,只有当oflag中有O_CREAT时,这个参数才会出现在open函数中,它主要用来指定创建一个新文件时的权限。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航