C++ open()和read()函数使用详解
对于Framework工程师来说,必要C或者C++编程能力是必须的,像对设备节点的操作是最基本的操作,那么我们便会用到open和read函数。open()函数用于打开文件,而read()函数用于从打开的文件中读取数据。
- open() 函数
open()函数是C/C++标准库中的一个POSIX标准函数,用于打开一个文件并返回一个文件描述符(File Descriptor),以供后续的读写操作。其函数声明如下:
#include <fcntl.h>
int open(const char* path, int flags, mode_t mode);
path:要打开或创建的目标文件名。
flags:对文件进行多种操作的模式,如O_RDONLY(只读打开)、O_WRONLY(只写打开)、O_RdwR(读写打开)、O_CREAT(若文件不存在,创建文件)等。
mode:新文件的访问权限,通常使用权限掩码如S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH。
如果打开文件成功,open()返回一个文件描述符;如果失败,返回-1,并设置errno以指示错误原因12。
- read() 函数
read()函数用于从打开的文件描述符中读取数据。其函数声明如下:
#include <unistd.h>
ssize_t read(int fd, void* buf, size_t count);
fd:文件描述符,由open()函数返回。buf:指向用于存储读取数据的缓冲区的指针。
count:要读取的字节数。
如果读取成功,read()返回实际读取的字节数;如果遇到文件结束或发生错误,返回-1,并设置errno以指示错误原因23。
示例代码
以下是一个简单的示例,展示如何使用open()和read()函数读取文件:
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
int main() {
const char* filePath = "input.txt";
int fd = open(filePath, O_RDONLY); // 以只读模式打开文件
if (fd < 0) {
perror("Failed to open file");
return -1;
}
char buffer[1024]; // 定义一个缓冲区用于存储读取的数据
ssize_t bytesRead = read(fd, buffer, sizeof(buffer)); // 从文件中读取数据到缓冲区
if (bytesRead < 0) { // 如果读取失败或遇到文件结束符EOF
perror("Failed to read file");
close(fd); // 关闭文件描述符
return -1;
}
printf("Read %ld bytes from file: %s\n", bytesRead, buffer); // 打印读取的内容和字节数
close(fd); // 关闭文件描述符
return 0;
}
到此这篇关于C++ open()和read()函数使用的文章就介绍到这了,更多相关C++ open()和read()函数内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持
C++ open()和read()函数使用详解的更多相关文章
- 自写函数VB6 STUFF函数 和 VB.net 2010 STUFF函数 详解
'*************************************************************************'**模 块 名:自写函数VB6 STUFF函数 和 ...
- SQL Server数据库ROW_NUMBER()函数使用详解
SQL Server数据库ROW_NUMBER()函数使用详解 摘自:http://database.51cto.com/art/201108/283399.htm SQL Server数据库ROW_ ...
- PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明
PHP函数篇详解十进制.二进制.八进制和十六进制转换函数说明 作者: 字体:[增加 减小] 类型:转载 中文字符编码研究系列第一期,PHP函数篇详解十进制.二进制.八进制和十六进制互相转换函数说明 ...
- PHP date函数参数详解
PHP date函数参数详解 作者: 字体:[增加 减小] 类型:转载 time()在PHP中是得到一个数字,这个数字表示从1970-01-01到现在共走了多少秒,很奇怪吧 不过这样方便计 ...
- SQL中CONVERT()函数用法详解
SQL中CONVERT函数格式: CONVERT(data_type,expression[,style]) 参数说明: expression 是任何有效的 Microsoft® SQL Server ...
- php中setcookie函数用法详解(转)
php中setcookie函数用法详解: php手册中对setcookie函数讲解的不是很清楚,下面是我做的一些整理,欢迎提出意见. 语法: bool set ...
- eval()函数用法详解
eval()函数用法详解:此函数可能使用的频率并不是太高,但是在某些情况下具有很大的作用,下面就介绍一下eval()函数的用法.语法结构: eval(str) 此函数可以接受一个字符串str作为参数, ...
- Python学习入门教程,字符串函数扩充详解
因有用户反映,在基础文章对字符串函数的讲解太过少,故写一篇文章详细讲解一下常用字符串函数.本文章是对:程序员带你十天快速入门Python,玩转电脑软件开发(三)中字符串函数的详解与扩充. 如果您想学习 ...
- 转载 LayoutInflater的inflate函数用法详解
http://www.open-open.com/lib/view/open1328837587484.html LayoutInflater的inflate函数用法详解 LayoutInflater ...
- 7--OC中NSLog函数输出格式详解
OC中NSLog函数输出格式详解 • %@ 对象 • %d, %i 整数 • %u 无符整形 • %f 浮点/双字 • %x, %X 二进制整数 • %o 八进制整数 • %zu size_t • % ...
随机推荐
- JVM 语言的探索发现
又在 WIKI 上溜达了一下 https://en.wikipedia.org/wiki/List_of_JVM_languages,有一些新的发现: ColdFusion Markup Langua ...
- Java JUC&多线程 基础完整版
Java JUC&多线程 基础完整版 目录 Java JUC&多线程 基础完整版 1. 多线程的第一种启动方式之继承Thread类 2.多线程的第二种启动方式之实现Runnable接口 ...
- 关于在VMware中安装的CentOS7系统中无法安装ntp
一.问题引言 今天在虚拟机中新安装了CentOS7,在使用yum命令时,出现如下如错误: 2.点击图片中链接,即是"2"中的红框,发现该链接竟不可达 3.于是开始找度娘,但并没有发 ...
- Qt编译数据库插件通用步骤说明
近期特意花了点时间,在之前数据库集成应用这个组件的基础上再次迭代完善,历经九九八十一难,将Qt的各种数据库插件,十几个Qt版本,全部编译一遍,同时打通了插件形式直连数据库和ODBC数据源连接方式,做过 ...
- [转]Windows10下CLion配置说明
Windows10下CLion配置说明CLion 是 C/C++的 IDE,可以配置多种编译环境,本文以配置MinGW编译环境为例. 安装CLion 的安装可直接到官网下载 ZIP,文件解压后直接运行 ...
- Python设计模式(第2版)中文的pdf电子书
Python设计模式(第2版)中文的pdf电子书下载地址:百度云盘,提取码:dmem
- 携程技术分享:亿级流量的办公IM及开放平台技术实践
本文由携程技术Jim分享,原题"日访问过亿,办公IM及开放式平台在携程的实践",下文进行了排版和内容优化. 1.引言 携程内部的办公IM项目最早在2016年立项,经历了初期简单办公 ...
- 【Java 温故而知新系列】基础知识-03 基本类型对应之包装类
1.包装类都有哪些? 基本类型都有对应的包装类型,这些包装类提供了一种面向对象的方式来处理基本数据类型,允许它们被用于需要对象的场景,如集合框架.泛型等. 对应关系: 基本类型 包装类型 boolea ...
- Canal同步MySQL增量数据
引言 在现在的系统开发中,为了提高查询效率 , 以及搜索的精准度, 会大量的使用 redis .memcache 等 nosql 系统的数据库 , 以及 solr . elasticsearch 类似 ...
- Docker安装Redis并设置密码
1. 镜像下载 docker pull redis 2. 创建目录 mkdir -p /etc/redis/redis.conf mkdir -p /data/redis 3. 启动容器 docker ...