对于framework工程师来说,必要c或者c++编程能力是必须的,像对设备节点的操作是最基本的操作,那么我们便会用到open和read函数。open()函数用于打开文件,而read()函数用于从打开的文件中读取数据。
1. 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。
2. 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()函数内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论