Linux应用软件编程:目录IO framebuffer

9、目录IO

1.打开目录文件:opendir()

2.读目录:readdir()

3.关闭目录:closedir()

  • opendir()

DIR *opendir(const char *name);

功能:打开目录文件并获得目录流指针

参数:

name:目录名

返回值:

成功:目录流指针

失败:NULL

  • closedir()

int closedir(DIR *dirp);

功能:关闭目录文件

参数:

dirp:目录流指针

返回值:

成功:0

失败:-1

  • readdir()

struct dirent *readdir(DIR *dirp);

功能:从目录流中读取数据

参数:

dirp:目录流指针

返回值:

成功:struct dirent指针,代表读到的文件信息

失败:NULL

文件末尾:NULL

int mkdir(const char *pathname, mode_t mode);

功能:创建一个目录文件(文件夹)

参数:

pathname:目录名称

mode:目录文件的操作权限

返回值:

成功:0

失败:-1

出错处理函数:

strerror:

char *strerror(int errnum);

功能:将错误码转换成错误信息字符串

参数:

errnum:错误码:errno

返回值:

成功·:错误码对应的字符串首地址

失败:NULL

perror

void perror(const char *s);

功能:打印自己的出错处理信息和系统给出的出错原因

10、framebuff

1.什么是framebuffer

帧缓存、帧缓冲技术。

是Linux为显示设备提供的一个接口,把显存抽象后的一种设备,通过设备,文件可以实现应用层向显存空间的数据写入,从而实现像素点的绘制。

RGB888(四字节 RGB565(两字节

2.如何操作framebuffer

内存映射技术:实现 显示空间和 用户空间的内存映射。向用户空间写入RGB颜色值,实现显示空间的写入。

  1. 打开显示设备文件/dev/fb0
  2. 获取显示设备相关参数:分辨率、像素点的位数(位深度)
  3. 建立内存映射
  4. 写入RGB颜色值
  5. 解除内存映射
  6. 关闭显示设备

2.vi /usr/include/linux/fb.h

struct fb_var_screeninfo vinfo;

ioctl(fb,FBIOGET_VSCREENINFO,&vinfo)
3.mmap()

void *mmap(void *addr, size_t length, int prot, int flags,

int fd, off_t offset);

功能:建立文件和用户空间的内存映射

参数:

addr:要映射的用户空间首地址

NULL:让内核选取空间,并将空间首地址返回

length:要映射的空间大小

prot:对映射空间的读写执行权限

PROT_READ | PROT_WRITE

flags:MAP_SHARED(共享映射区域)

fd:要映射的文件

offset:映射偏移量 0

返回值:

成功:映射到的用户空间首地址

失败:MAP_FAILED((void*)-1)
5.munmap

int munmap(void *addr, size_t length);

相关推荐
无奈笑天下5 小时前
银河麒麟上nproc命令教程详解
linux·运维·服务器
Rabitebla8 小时前
【Linux】进程控制(十二) 自定义 Shell(二):内建命令与进程工作目录管理
linux·c++·笔记·学习·bash
坤坤子吖12 小时前
Linux网络编程:TCP 粘包与半包问题,如何正确处理 TCP 流式数据?
linux·服务器·网络·笔记·网络协议·学习
AI_Gump12 小时前
Harness篇|DeepSeek Harness 上手机:五条安卓移植路线与 App 内 Linux 拆解
android·linux·人工智能·智能手机·deepseek
星恒随风14 小时前
MySQL 从零入门(六):复合查询详解——多表查询、自连接、子查询与 UNION
linux·服务器·数据库·mysql
少司府14 小时前
嵌入式入门篇(二):初识STM32F103ZET6
linux·python·stm32·单片机·嵌入式硬件·mcu·嵌入式软件
无足鸟ICT15 小时前
【RHCA+】IO调度算法
linux·服务器
wacsii15 小时前
【Linux进程(四)】命令行参数与环境变量
linux·服务器
无奈笑天下15 小时前
银河麒麟上lsblk命令教程详解
linux·运维·服务器·数据库
科研邪修法16 小时前
培训PDF保护配置:把需求转换成可验收权限
linux·服务器·网络