ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

快速掌握Linux(3)(目录IO)(framebuffer)(日志文件)(其他)

快速掌握Linux(3)(目录IO)(framebuffer)(日志文件)(其他) 8.目录IO打开目录文件opendir()读目录文件readdir()关闭目录文件closedir()1)opendirDIR *opendir(const char *name);功能打开目录文件并获得目录流指针参数name目录名返回值成功目录流指针失败NULL2)closedirint closedir(DIR *dirp);功能关闭目录文件参数dirp目录流指针返回值成功 0失败-13)readdirstruct dirent *readdir(DIR *dirp);功能从目录流中读取数据参数dirp目录流指针返回值成功struct dirent 指针代表读到的文件信息失败NULL文件末尾NULLstruct dirent {ino_t d_ino; /*Inode number*/off_t d_off; /*Not an offset; see below*/unsigned short d_reclen; /*Length of this record */unsigned char d_type; /*Type of file; not supportedby all filesystem types */char d_name[256]; /* Null-terminated filename */};命令mkdir创建文件夹touch创建普通文件openfopenmkdir;目录遍历int main(void){DIR *pdir opendir(/dev);if (NULL pdir){printf(opendir error\n);return -1;}while (1){struct dirent *pinfo readdir(pdir);if (NULL pinfo){break;}if (. pinfo-d_name[0]){continue;}printf( %s : %ld\n, pinfo-d_name, pinfo-d_ino);}closedir(pdir);return 0;}9.其他int printf(const char *format, ...);int fprintf(FILE *stream, const char *format, ...);功能将格式化后的字符串写入到stream文件流代表的文件中。int dprintf(int fd, const char *format, ...);功能将格式化后的字符串写入到fd所代表的文件中。*int sprintf(char *str, const char *format, ...);功能将格式化后的字符串写入到字符型数组中字符串的拼接格式化可以将整形数据、浮点型数据等转换成字符串char *strtok(char *str, const char *delim);功能字符串截取函数参数str要截取的原始字符串delim要截断的分隔符返回值成功截取到的子字符串的首地址失败NULL已经到字符串末尾errno is set出错处理函数strerrorchar *strerror(int errnum);功能将错误码转换成对应的错误信息字符串参数errnum错误码errno返回值成功返回错误码对应的字符串首地址失败NULL10.framebuffer1)什么是framebuffer帧缓存、帧缓冲技术。是Linux为显示设备提供的一个接口把显存抽象后的一种设备通过该设备文件可以实现应用层向显存空间的数据写入从而实现像素点的绘制。2)如何操作framebuffer通过内存映射技术可以实现显存空间和用户空间的内存映射通过向用户空间写入RGB颜色值从而实现显存数据的写入。打开显示设备文件/dev/fb0获取显示设备相关参数分辨率、像素点的位数位深度建立内存映射写入RGB颜色值解除内存映射关闭显示设备文件void *mmap(void *addr, size_t length, int prot, int flags,int fd, off_t offset);功能建立文件和用户空间的内存映射参数addr要映射的用户空间首地址NULL让内核选取空间并将空间首地址返回length要映射的空间大小prot对映射空间的读写执行权限PROT_READ | PROT_WRITEflagsMAP_SHARED (共享映射区域)fd要映射的文件offset映射的偏移量返回值成功映射到的用户空间首地址失败MAP_FAILED((void *)-1)11.日志文件日志文件程序运行过程中记录一些有用信息或者出错信息。比如调试信息、运行状态、告警信息、出错信息等。要求日志按照以下格式记录[2026-8-24 17:32:20][INFO] 显示设备初始化完成[2026-8-24 17:33:20][ERROR] 显示设备打开失败[2026-8-24 17:40:20][WARNING] 某个数据写入错误日志分三个等级ERRORWARNINGINFO封装以下三个函数实现日志记录1.程序运行启动时初始化日志模块init_log();2.在适当位置调用写入日志的函数write_log(INFO, 显示设备初始化完成);write_log(ERROR, 显示设备打开失败);3.程序运行结束之前关闭日志文件deinit_log();4.将日志按天存储日志名Log20260824.logLog20260825.logLog20260826.log
返回列表