当前位置: 首页 > news >正文

Mongoose 开源库--Filesystem(文件系统)使用笔记

一、相关API

Mongoose 开源库中也包含 文件系统 相关的 API,如下:

af7dbced1c2bc5c074786fcfd5dc1100.png

908f21f9f9c87a212c646856d31875b1.png

文件虚拟层:

struct mg_fs {int (*st)(const char *path, size_t *size, time_t *mtime);  // stat filevoid (*ls)(const char *path, void (*fn)(const char *, void *), void *);void *(*op)(const char *path, int flags);             // Open filevoid (*cl)(void *fd);                                 // Close filesize_t (*rd)(void *fd, void *buf, size_t len);        // Read filesize_t (*wr)(void *fd, const void *buf, size_t len);  // Write filesize_t (*sk)(void *fd, size_t offset);                // Set file positionbool (*mv)(const char *from, const char *to);         // Rename filebool (*rm)(const char *path);                         // Delete filebool (*mkd)(const char *path);                        // Create directory
};enum { MG_FS_READ = 1, MG_FS_WRITE = 2, MG_FS_DIR = 4 };

具体可查看官方文档,官方介绍文档:

https://mongoose.ws/documentation/#filesystem

二、测试代码

测试代码如下:

#include "mongoose.h"int main(int argv,char *argc[]) 
{mg_log_set(MG_LL_DEBUG);  // Set log levelsize_t size = 0;char *data=NULL;struct mg_fd *fd=NULL;if(argv != 3){MG_INFO(("argc[1] is file path\n"));MG_INFO(("argc[2] is file content\n"));return -1;}MG_INFO(("%d\n",1));// fd = mg_fs_open(&mg_fs_posix, "./test.txt", MG_FS_WRITE);// mg_fs_close(fd);MG_INFO(("%d\n",2));mg_file_write(&mg_fs_posix, argc[1], argc[2], strlen(argc[2]));// MG_INFO(("%d\n",3));// fd = mg_fs_open(&mg_fs_posix, "./test.txt", MG_FS_READ);// mg_fs_close(fd);MG_INFO(("%d\n",4));data= mg_file_read(&mg_fs_posix, argc[1], &size);MG_INFO(("%s\n",data)); if(data != NULL)free(data);return 0;
}

生成可执行文件main。

测试的文件名为2.txt,文件内容为“123456789abcdef”。

输入指令

./main  2.txt  123456789abcdef

结果:

2b77d657d525e0bcba1a913e39b341f9.png

欢迎关注公众号:嵌入式学习与实践

相关文章:

Mongoose 开源库--Filesystem(文件系统)使用笔记

一、相关API Mongoose 开源库中也包含 文件系统 相关的 API,如下: 文件虚拟层: struct mg_fs {int (*st)(const char *path, size_t *size, time_t *mtime); // stat filevoid (*ls)(const char *path, void (*fn)(const char *, void *), v…...

新兴初创企业参展招募

一般来说,创业公司的生存率较低,失败率较高。根据不同的数据来源,创业公司的失败率高达 80%-90%。据统计,在中国每年新注册的企业数量超过 100 万家,但能够存活到 5 年以上的企业不足 7%,10 年以上不足 2%。…...

【Linux】Nginx安装使用负载均衡及动静分离(前后端项目部署),前端项目打包

一、Nginx导言 1、引言 Nginx 是一款高性能的 Web 服务器和反向代理服务器,也可以充当负载均衡器、HTTP 缓存和安全防护设备。它的特点是内存占用小、稳定性高、并发性强、易于扩展,因此在互联网领域得到了广泛的使用。 总结出以下三点: 负载均衡&#…...

银行和金融企业为何青睐这8款项目管理工具

银行、金融行业中主流的8款项目管理系统:1.PingCode;2.Worktile;3.Microsoft Project;4.Jira by Atlassian;5.Asana;6.Trello;7.Wrike;8.Teambition。 银行和金融性质的公司在项目管…...

一分钟理解npm run dev 和 npm run serve

前端开发过程中运行Vue项目的时候,有时候使用npm run serve命令可以启动项目,有时候却会报错;有时候使用npm run dev命令可以启动项目,有时候却也会报错。是什么原因造成这种情况呢,原因在于Vue脚手架版本的问题&#…...

HTTP 协议请求头 If-Match、If-None-Match 和 ETag

概述 在 HTTP 协议中,请求头 If-Match、If-None-Match、If-Modified-Since、If-Unmodified-Since、If-Range 主要是为了解决浏览器缓存数据而定义的请求头标准,按照协议规范正确的判断和使用这几个请求头,可以更精准的处理浏览器缓存&#x…...

DAY42 1049.最后一块石头的重量II + 494.目标和 + 474.一和零

1049.最后一块石头的重量II 题目要求&#xff1a;有一堆石头&#xff0c;每块石头的重量都是正整数。 每一回合&#xff0c;从中选出任意两块石头&#xff0c;然后将它们一起粉碎。假设石头的重量分别为 x 和 y&#xff0c;且 x < y。那么粉碎的可能结果如下&#xff1a; …...

uniapp原生插件之安卓华为统一扫码HMS Scan Kit

插件介绍 华为统一扫码服务&#xff08;Scan Kit&#xff09;提供便捷的条形码和二维码扫描、解析、生成能力 插件地址 安卓华为统一扫码HMS Scan Kit - DCloud 插件市场 超级福利 uniapp 插件购买超级福利 详细使用文档 详细使用文档 插件申请权限 android.permi…...

数模国赛——多波束测线问题模型建立研究分析

第一次参加数模国赛&#xff0c;太菜了~~~~意难平 问题一 画出与测线方向垂直的平面和海底坡面的交线构成一条与水平面夹角为&#x1d400;的斜线的情况下的示意图进行分析&#xff0c;将覆盖宽度分为左覆盖宽度和右覆盖宽度&#xff0c;求出它们与海水深度和&#x1d400;、…...

[AUTOSAR][诊断管理][ECU][$37] 请求退出传输。终止数据传输的(上传/下载)

文章目录 一、简介二、服务请求报文定义肯定响应支持的NRC三、示例流程Step 1:Step 2:报文示例:Step 1:请求RequestDownload(0x34)服务Step 2:请求TransferData (0x36)服务,传输数据Step 3:请求RequestTransferExit(0x37)服务总结:三、示例代码37_req_transfer_e…...

vue+canvas实现横跨整个页面的动态的波浪线(贝塞尔曲线)

本来写这个特效 我打算用css实现的,结果是一波三折,我太难了,最终没能用css实现,转战了canvas来实现。来吧先看效果图 当然这个图的波浪高度、频率、位置、速度都是可调的,请根据自己的需求调整,如果你讲波浪什么的调大一下 还有有摆动的效果哦。 以下是完整代码 <…...

LeetCode算法题解|​ 669. 修剪二叉搜索树​、108. 将有序数组转换为二叉搜索树、​538. 把二叉搜索树转换为累加树​

一、LeetCode 669. 修剪二叉搜索树​ 题目链接&#xff1a;669. 修剪二叉搜索树 题目描述&#xff1a; 给你二叉搜索树的根节点 root &#xff0c;同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树&#xff0c;使得所有节点的值在[low, high]中。修剪树 不应该 改变…...

直播界很火的无线领夹麦克风快充方案 Type-C接口 PD快充+无线麦克风可同时进行

当前市场上流行一款很火的直播神器&#xff0c;无线领夹麦克风&#xff08;MIC&#xff09;&#xff0c;应用于网红直播&#xff0c;网课教学&#xff0c;采访录音&#xff0c;视频录制&#xff0c;视频会议等等场景。 麦克风对我们来说并不陌生&#xff0c;而且品类有很多。随…...

Jmeter 汉化中文语言

找到 bin -> jmeter.propertise 修改参数&#xff1a;languageen --> languagazh_CN OK&#xff01;...

centos9 stream 下 rabbitmq高可用集群搭建及使用

RabbitMQ是一种常用的消息队列系统&#xff0c;可以快速搭建一个高可用的集群环境&#xff0c;以提高系统的弹性和可靠性。下面是搭建RabbitMQ集群的步骤&#xff1a; 基于centos9 stream系统 1. 安装Erlang和RabbitMQ 首先需要在所有节点上安装Erlang和RabbitMQ。建议使用官…...

代码随想录算法训练营第10天|232. 用栈实现队列 225. 用队列实现栈

JAVA代码编写 232. 用栈实现队列 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作&#xff08;push、pop、peek、empty&#xff09;&#xff1a; 实现 MyQueue 类&#xff1a; void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除…...

线上Kafka集群如何调整消息存储时间

这里是weihubeats,觉得文章不错可以关注公众号小奏技术&#xff0c;文章首发。拒绝营销号&#xff0c;拒绝标题党 Kafka版本 kafka_2.13-3.5.0 背景 Kafka 默认消息存储时间为7天&#xff0c;实际线上的业务使用Kafka更多的是一些数据统计之类的业务&#xff0c;大多是朝生夕…...

[迁移学习]DA-DETR基于信息融合的自适应检测模型

原文标题为&#xff1a;DA-DETR: Domain Adaptive Detection Transformer with Information Fusion&#xff1b;发表于CVPR2023 一、概述 本文所描述的模型基于DETR&#xff0c;DETR网络是一种基于Transformer的目标检测网络&#xff0c;详细原理可以参见往期文章&#xff1a;…...

【MATLAB】全网唯一的13种信号分解+FFT傅里叶频谱变换联合算法全家桶

有意向获取代码&#xff0c;请转文末观看代码获取方式~ 大家吃一顿火锅的价格便可以拥有13种信号分解FFT傅里叶频谱变换联合算法&#xff0c;绝对不亏&#xff0c;知识付费是现今时代的趋势&#xff0c;而且都是我精心制作的教程&#xff0c;有问题可随时反馈~也可单独获取某一…...

Nginx安装与配置

1.下载安装包 官网下载地址&#xff1a;nginx: download 可以先将安装包下载到本地再传到服务器&#xff0c;或者直接用wget命令将安装包下载到服务器&#xff0c;这里我们直接将安装包下载到服务器上。未安装wget命令的需要先安装wget&#xff0c;yum install -y wget [root…...

私域流量红利见顶?那是你没解锁企业微信 API 的隐藏玩法!

在公域流量成本居高不下的今天&#xff0c;“私域流量”成了每个品牌的标配。然而&#xff0c;许多企业在把客户拉进企业微信后&#xff0c;却发现运营陷入了瓶颈&#xff1a;每天机械地群发广告&#xff0c;客户互动率低&#xff0c;退群率却居高不下。很多人惊呼&#xff1a;…...

coze 实战:萌宠摆摊视频工作流,一键自动生成趣味短片

大家吼&#xff0c;我是专注于AI的睡醒了叭&#xff01; 我不是高手&#xff0c;但是想和大家分享自己学到的好玩好用的工作流~ 大家有没有在某抖平台刷到过这样的萌宠摆摊视频&#xff0c;真的很可爱了&#xff01;也有很不错的点赞量&#xff0c;如果持续发&#xff0c;涨粉…...

别再手动算q值了!用Excel地理探测器软件包,5分钟搞定空间分异分析

别再手动算q值了&#xff01;用Excel地理探测器软件包&#xff0c;5分钟搞定空间分异分析 地理空间数据分析中&#xff0c;识别变量间的分异特征和驱动因子一直是研究难点。传统方法依赖复杂公式推导和编程实现&#xff0c;让许多研究者望而却步。而地理探测器&#xff08;Geod…...

处理智能体的不确定性:重试、回退与人工介入

一个让AI“不任性”的实战手册——该认错时认错&#xff0c;该求助时求助先讲一个让我至今心有余悸的事。 去年做的一个金融Agent&#xff0c;任务是每天自动从十几家券商网站抓取研报&#xff0c;提取关键的投资评级和目标价&#xff0c;然后汇总成一张表发给基金经理。上线跑…...

数据冗余与规范化的本质[数据库原理]

我们把它想象成整理一个乱七八糟的杂物间的过程。我们的目标是把所有东西分门别类放好&#xff0c;让找东西、放东西、更新东西都变得轻松&#xff0c;并且避免重复占用空间。 第一部分&#xff1a;为什么要“规范化”&#xff1f;—— 解决“大杂烩”表的三大痛点 假设我们管…...

开源写作助手:本地化部署的智能文本分析与AI辅助创作工具

1. 项目概述&#xff1a;一个为写作者量身定制的智能工具箱如果你经常需要写点东西&#xff0c;无论是技术文档、博客文章、工作报告&#xff0c;还是小说草稿&#xff0c;大概率都经历过这样的时刻&#xff1a;对着空白文档发呆&#xff0c;感觉大脑一片空白&#xff1b;或者写…...

让框架跑得久一点:失败继续、日志、截图、HTML 与网络现场

摘要 前面几篇讲了框架如何执行 CSV、如何处理变量和状态、如何做网络断言。 到这里&#xff0c;框架已经能跑起来。 但自动化测试长期使用时&#xff0c;真正麻烦的不是失败&#xff0c;而是失败后看不懂。 这篇文章讲框架为了“失败后能排查”做了哪些设计&#xff1a;contin…...

CFS调度器:从公平算法到内核实现全景解析

1. CFS调度器的设计哲学与公平性实现 Linux内核的CFS&#xff08;Completely Fair Scheduler&#xff09;调度器诞生于2007年&#xff0c;取代了之前的O(1)调度器。它的核心设计理念可以用一个简单的比喻理解&#xff1a;想象CPU时间是一块披萨&#xff0c;CFS要确保每个进程都…...

如何用VR-Reversal将3D VR视频高效转换为普通2D格式:完整实用指南

如何用VR-Reversal将3D VR视频高效转换为普通2D格式&#xff1a;完整实用指南 【免费下载链接】VR-reversal VR-Reversal - Player for conversion of 3D video to 2D with optional saving of head tracking data and rendering out of 2D copies. 项目地址: https://gitcod…...

基于Minicursor理念的Node.js后端服务快速搭建与架构解析

1. 项目概述与核心价值最近在折腾一个个人项目&#xff0c;需要快速搭建一个轻量级的、能处理实时数据流的后端服务。在寻找合适的脚手架时&#xff0c;我偶然在 GitHub 上发现了forrestchang/minicursor这个项目。乍一看名字&#xff0c;你可能会联想到数据库的“游标”&#…...