概述
直接IO(与硬盘磁盘直接通信)
缓存IO(经过内核缓存)
1
• 打开文件open函数
• int open(const char *path, int oflags);
• int open(const char *path, int oflags,mode_t mode);
– 参数path表示:路径名或者文件名。路径名为绝对路径名。
– 参数oflags表示:打开文件所采取的动作
• O_RDONLY文件只读;O_WRONLY文件只写;O_RDWR文件可读可写;
O_NOCTTY如果路径指向终端,则不将设备作为此进程的控制终端
• O_NDELAY非阻塞方式操作文件
– mode表示:设置创建文件的权限。权限的宏定义很麻烦,可以直接用数
字替代
– 返回值:出错返回-1;否则返回文件句柄
使用man 2 open 查看open函数的相关
//声明一个文件句柄
Int fd
if((fd = open())<0){
//打印串口信息
}
Else
//打印错误信息
2.
打开文件creat函数:
• int creat(const char * pathname, mode_t mode);
– 参数path表示:路径名或者文件名。路径名为绝对路径名。
– 参数oflags表示:打开文件所采取的动作。
• O_RDONLY文件只读;O_WRONLY文件只写;O_RDWR文件可读可写
Fd = creat (test3)
3.
关闭文件close函数:
• int close(int fd);->open
• 写文件write函数:
• ssize_t write(int fd, const void *buf, size_t count);
– 参数fd表示:使用open 函数打开文件之后返回的句柄。
– 参数*buf表示:写入的数据
– 参数count表示:最多写入字节数
– 返回值:出错-1,;其它数值表示实际写入的字节数
关键代码
Ssize_t length
Buff = "***";
Int fd ;
Int *test
Fd = open (fd,….)
Length = write(fd ,buff,strlen(buff))
Close(fd)
4 read
ssize_t read(int fd,void *buf,size_t len);
– 参数fd:使用open 函数打开文件之后返回的句柄
– 参数*buf:读出的数据保存的位置
– 参数len:每次最多读len 个字节
– 返回值:错误返回-1,执行成功返回实际读取值
最后
以上就是虚拟红牛为你收集整理的IO操作(直接IO)的全部内容,希望文章能够帮你解决IO操作(直接IO)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复