UNIX系统文件I/O总结
来源:互联网 发布:关闭电脑21端口 编辑:程序博客网 时间:2024/06/05 06:57
UNIX 系统中文件I/O的五个主要函数是:open(),read(),write(),close(),ioctl()。
open函数原型:
#include<fcntl.h>int open(const char *pathname, int oflag, ...mode_t mode);
对于open函数而言,仅当创建新文件时才使用第三个参数。pathname是要打开或创建的文件名,oflag参数用来说明此函数的多个选项,如O_RDONLY、O_WRONLY、O_RDWR等分别代表只读、只写、可读可写等,可用or构成或运算。若执行成功,函数返回打开或创建的文件描述符,否则返回-1,并置全局变量errno用来说明失败原因。
read函数原型:
#include<unistd.h>ssize_t read(int fields, void *buf, size_t nbytes);
若执行成功返回读到的字节数,若已到文件末尾则返回0,若出错则返回-1,并置errno值。返回的字节数有可能不等于nbytes,但并不代表读取出错。
write函数原型:
#include<unistd.h>ssize_t write(int fields, const void *buffer, size_t nbytes);
若执行成功返回写的字节数,若出错则返回-1.返回的字节数通常等于nbytes,否则表示出错。
lseek函数原型:
#include<unistd.h>off_t lseek(int fields, off_t offset, int where);
lseek函数用于显式的为打开的文件设置其偏移值,where有三个选项,SEEK_SET、SEEK_CUR、SEEK_END,分别表示从文件开始处计算、从当前值开始计算、从文件末尾开始计算。若成功则返回新的文件偏移量,出错则返回-1.
close函数原型:
#include<unist.h>int close(int fields);执行成功返回0,出错返回-1。
ioctl函数原型:
#include<unistd.h>int ioctl(int fields, int cmd, ...);
ioctl函数对描述符引用的对象执行cmd参数值哦i给出的操作,根据特定设备的不同,可能会有第三个参数。
fsat、stat和lstat系统调用
#include<unistd.h>#include<sys/stat>#include<sys/types.h>int fstat(int fields, struct stat *buf);int stat(const char *path, struct stat *buf);int lstat(const char *path, struct stat *buf);
这三个函数都返回与打开文件描述符相关的文件的状态信息,该信息会被存储到struct stat *buf中。fstat通过文件描述符,而后两个函数通过文件名,效果相同。但是当文件是一个符号链接时,lstat返回的是该符号链接本身的信息,而stat返回的是该链接指向的文件的信息。
dup和dup2系统调用
#include<unistd.h>int dup(int fildes);int dup2(int fildes, int newfildes);这两个函数用于复制文件描述符,使我们可以通过两个或多个文件描述符去访问文件。dup复制文件描述符并返回一个新的描述符,而dup2则指定一个新的文件描述符来将一个文件描述符复制为另一个。
0 0
- UNIX系统文件I/O总结
- UNIX 文件I/O总结
- unix----文件I/O
- UNIX文件 I / O
- Unix系统级I/O
- unix系统编程小结(一)------文件I/O
- UNIX文件I/O函数
- Unix 标准I/O总结和与文件I/O的比较
- 本质论-Unix系统I/O
- [UNIX系统编程] I/O缓冲
- 理解unix 系统I/O --csapp读书笔记
- Unix/Linux编程-系统调用I/O
- UNIX环境编程—文件I/O
- unix 文件I/O之诠释
- UNIX环境高级编程----文件I/O
- 《unix高级环境编程》文件I/O
- 《unix高级环境编程》文件I/O
- UNIX文件I/O之判断文件类型
- OpenCL常量解析
- cvGoodFeaturesToTrack和(CV::Mat 下的goodFeaturesToTrack)
- android:configChanges属性
- 组合查询——拼接字符串
- 理解JavaScript中的事件处理
- UNIX系统文件I/O总结
- XML命名空间深度解析 —— XML1.0和XML1.1区别
- Generate Parentheses
- LM3S 串口收发心得
- 14周【项目3-立体类族共有的抽象类】
- hibernate 4.0+版本和3.0+版本的区别总结
- js点击相应的li增加class
- 解决Android SDK Manager 更新、下载慢以及待安装包列表不显示
- 关于typedef用法总结