我是靠谱客的博主 虚拟红牛,最近开发中收集的这篇文章主要介绍IO操作(直接IO),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

直接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)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(65)

评论列表共有 0 条评论

立即
投稿
返回
顶部