2012年(8)
分类: LINUX
2012-06-29 15:57:19
大家都知道的是在里linux中一切都是看作文件操作的。包括外部设备也是看作文件操作。在文件操作中有三个比较特殊的文件,其中有/dev/console系统终端控制台,/dev/tty 进程控制中终端,/dev/null所有写入这个设备的输出都被丢弃。
下面一一介绍文件操作中的各种函数的作用。首先一个程序运行的时候事先会打开三个文件,输入,输出,出错。文件的描述符分别为0,1,2.所以如果有文件打开的话,文件标识符应该是从3开始的,其中标准输出和标准出错都是输出到中断的。
#include
size_t write(int fildes,const void *buf,size_t nbytes)
第一个参数 ,文件标识符,第二个 要输入的内容指针,第三个要写入的长度,返回值是写进去的字符的个数。
#include
size_t write(int fildes,const void *buf,size_t nbytes);
把文件中前nbytes字符写入*buf中 返回写入的个数
#include
#include
#include
int open(const char *path,int oflags);
int open(const char *path,int oflags,mode_t mode)
通过文件的路径打开文件,返回的是一个唯一的一个文件标识符。oflags是文件打开模式。基本的有三种O_RDONLY,O_WRONLY,O_RDWR
#include
int close(int fildes)
关闭文件,fildes为文件表示符。
#include
int ioctl(int fildes,int cmd,……);
对描述符制定的对象进行cmd参数给出的操作。作用是用在IO 操作中,在socket中用
其他文件管理有关的系统调用
#include
#include
off_t lseek(int fildes,off_t offset,int whence)
对文件描述符的指针进行操作。offset指定位置。whence定义偏移量,SEEK_SET offset是个绝对位置。SEEK_CUR offset相当于当前位置的一个相对位置, SEEK_END offset是相对于文件尾的一个相对位置。 返回偏移字节,失败返回-1
#include
#include
#include
int fstat(int fildes,struct stat *buf);
int stat(const char *path,strut stat *buf);
int lstat(const char *path,struct stat *buf);
将文件的状态信息写复到buf结构中 stat结构体中包括的内容有
st_mode 文件权限和文件类型信息 st_ino 与该文件关联的inode
st_dev 保存文件的设备 st_uid 文件属主的uid号 st_gid 文件属主的gid号 st_atime 文件上次被访问的时间 、st_ctime 文件的权限,属主 组或者内容上上次改变的时间
st_mtime 文件的内容上次被修改的时间 st_nlink 文件上硬链接的个数
#include
int dup(int fildes);
int dup2(int fildes,int fides2);
提供了复制文件描述符的方法,dup复制文件描述符,返回一个文件描述符。 dup2 把一个文件描述符复制为另一个文件描述符
上面讲的都是关系系统调用的文件操作 下面要说的是标准的I/O库操作,包含在stdio.h中
#include
FILE *fopen(const char *filename,const char *mode)
文件打开函数,开打由参数filename指定的文件,成功返回非空的FILE指针,失败返回一个空NULL指针。而且mode应该是字符串 而非字符。
#include
size_t fread(void *ptr,size_t,size size_t nitems,FILE *stream)
从stream读到ptr指向的数据缓冲区中。size参数指定每个数据记录的长度,计数器nitems给出要传输的记录的个数。返回值是成功地读到数据缓冲区的记录的个数。
#include
size_t fwrite(const void *ptr,size_t size, size_t nitems, FILE *stream)
从指定的缓冲区巴蜀据写入流中。返回成功写入记录的个数。