是否有可能在 C 中伪造文件流,例如 stdin?

2024-06-25

我正在开发一个没有文件系统的嵌入式系统,我需要执行从通过命令(如参数)指定的文件或直接从标准输入指定的文件中获取输入数据的程序。

我知道可以使用此答案中的方法用二进制文件烘焙文件数据:C/C++ with GCC:静态地将资源文件添加到可执行文件/库 https://stackoverflow.com/questions/4864866/c-c-with-gcc-statically-add-resource-files-to-executable-library但目前我需要重写所有程序才能以新的方式访问数据。

例如,是否可以烘焙一个文本文件,并在运行程序时使用指向 stdin 的假文件指针来访问它?


如果您的系统是无操作系统的裸机系统,那么您的 C 库将具有“重定向”存根或挂钩,您需要实现这些存根或挂钩才能将库挂接到平台中。这通常包括低级 I/O 功能,例如open()、读()、写()、seek()您可以像您希望实现基本的 stdin、stdout、stderr 流一样实现这些(在 POSIX 和大多数其他实现中,它们分别具有固定的文件描述符 0、1 和 2,并且不需要显式打开)、文件I/O,在本例中用于管理任意内存块。

open()例如将传递一个文件或设备名称(该字符串可以以您希望的任何方式解释),并将返回一个文件描述符。您可能会将“cfgdata:”识别为访问“内存文件”的设备名称,并且您将返回一个唯一的描述符,然后将其传递给read()。您使用描述符来引用用于管理流的数据;可能比读取字符时按数字递增的索引多一点。相同的索引可以直接设置seek()执行。

一旦您实现了这些函数,更高级别的 stdio 函数甚至 C++ iostream 将在您的低级别实现中支持的设备或文件系统上正常工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否有可能在 C 中伪造文件流,例如 stdin? 的相关文章

  • 为什么更新外键后引用约束会不一致?

    抱歉 这个模糊的标题很难用一句话来描述 我有 2 个实体User and UserAddress 其中 User 有 2 个外键DefaultInvoiceAddressId and DefaultDeliveryAddressId和 Us
  • 根据当前文化调用不同(本地化)视图

    我在用着LocalizationAttribute它实现了ActionFilterAttribute本地化视图 我简单地说 Localize 在控制器上 我使用 LocalizeStrings resx 文件根据当前线程上的语言进行应用 一
  • 获取当前用户的 NetworkCredential (C#)

    我正在尝试从控制台应用程序调用 Web 服务 并且我需要向客户端提供System Net NetworkCredential object 是否有可能创建一个NetworkCredential启动应用程序的用户的对象而不提示输入用户名 密码
  • 指向指针的指针和指向二维数组的指针之间的区别

    如果我有一个二维数组 B 定义为 int B 2 3 1 3 5 2 4 6 Is int p B与 一样int p 3 B int f B printf d f 1 gives 5作为输出 同时printf d f 给出 1 作为答案 为
  • 错误 C2065:'cout':未声明的标识符

    我正在处理我的编程作业的 驱动程序 部分 但我不断收到这个荒谬的错误 错误 C2065 cout 未声明的标识符 我什至尝试过使用std cout但我收到另一个错误 IntelliSense 命名空间 std 没有成员 cout 当我宣布u
  • 将标准库添加到C++ eclipse项目中

    一个 非常 新手 C 问题 有没有办法自动将标准库添加到 C eclipse 项目中 我安装了 CDT 主要功能插件 您可以手动添加 STL 标头的路径路径和符号 gt 包含选项卡 http help eclipse org galileo
  • ObjectTrackingEnabled 和 linq-to-sql

    I read here http www sidarok com web blog content 2008 05 02 10 tips to improve your linq to sql application performance
  • 如果 .txt 文件不存在,则创建一个,如果存在则追加新行

    我想创建一个 txt 文件并写入它 如果该文件已经存在 我只想添加更多行 string path E AppServ Example txt if File Exists path File Create path TextWriter t
  • ASP.NET 中的 thread.sleep

    我正在为我的网站模拟彗星实时馈送协议 因此在我的控制器中我添加 while nothing new before timeout Thread Sleep 1000 但我注意到添加此功能后整个网站变慢了 调试后我得出结论 当我打电话时Thr
  • 持续运行的 C# 代码 - 服务还是单独的线程?

    我有一个 NET 4 Web 应用程序 它有 3 个关联的独立项目 DAL BAL 和 UI 我正在使用实体框架进行数据库交互 我有代码循环遍历一堆数据库数据 根据找到的内容调用方法 然后更新数据库 我希望这段代码一直运行 同时 我希望用户
  • Excel 2007 中的数值 - 底层 xml 文件中的表示与存储

    这个问题与 NET和OpenXml有关 我已经阅读了以下文章 它有很好的解释 但没有回答我的问题 Excel 2007 中数值的可视化与底层 xml 文件不一致 https stackoverflow com questions 58594
  • WPF MVVM后台打印数据绑定问题

    我正在使用 wpf mvvm 开发一个销售点应用程序 在交易生命周期的许多阶段 都会在后台打印收据 我已经使用其他示例在后台生成和打印收据 我正在后台打印一个 UserControl 一切看起来都很棒 然后 我为该控件创建了 ViewMod
  • 剥离 OLE 标头信息 (MS Access / SQL Server)

    我有一个 C 应用程序需要支持二进制数据库内容 图像等 当使用 MS Access 或 MS SQL Server 时 此数据被包装在 OLE 对象内 如何去除此 OLE 标头信息 请注意 我不能只查找特定标签的开头 因为内容可以是 png
  • 实体框架中的导航属性是什么

    我是实体框架的新手 当Visual Studio创建模型图时我们主要可以看到Entities Propertie和Navigation Properties这两个东西 那么这些Navigation Properties是什么 如何使用它们
  • 将 R 值传递给采用 L 值的函数时出现过载歧义

    我有 2 个重载函数 一个采用 L 值 另一个采用 R 值 目的是让该函数可以像这样调用 Obj obj foo obj OR foo Obj 所以 我写了2个重载函数 template
  • 如何进行平衡组捕获?

    假设我有这个文本输入 tes tR R abc aD mnoR xyz 我想提取 ff 输出 R abc R xyz D mnoR xyz R R abc aD mnoR xyz 目前 我只能使用平衡组方法提取组内的内容 如中所示msdn
  • 是否可以在 Eclipse 中为除 Java 之外的 Eclipse 编写插件?

    谁能帮我用c 写一个eclipse插件 weekens 和 celavek 感谢您提供的信息 我正在研究 JNI 并将尝试实现它 celavek 我们必须做什么样的主控 控制 在C 和java接口中处理是否风险更大 我的要求是在 Java
  • 在 C# 中为 ListBox 分配数据源时,如何从 ListBox 中删除所选项目?

    在 C 中为 ListBox 分配数据源时 如何从 ListBox 中删除所选项目 尝试删除时出现错误 设置 DataSource 属性后 无法修改项目集合 但是当我尝试从数据源 数据表 中删除项目时 它会抛出错误 因为 数据行不在当前行集
  • 从不同的线程访问对象

    我有一个服务器类 它基本上等待来自客户端的连接 在该类中 我创建了一个 NetworkStream 对象 以便能够从客户端接收字节 由于 NetworkStream Read 方法不是异步的 这意味着它将等到从客户端读取字节才能继续执行类似
  • 如何从与 C# lambda 集成(而非代理集成)的 Amazon API 网关获取正确的 http 状态代码?

    我正在使用 C lambda 与 API 网关集成 我希望 API 网关返回正确的错误代码 例如 400 404 500 等 API网关模块tf文件 provider aws version lt 2 70 0 region var aws

随机推荐

  • 如何使我的 Objective-C 类符合 Swift 的“Equatable”协议?

    我有一个 Objective C 类 恰好是一个按钮 但这并不重要 在我的 混合语言 项目的另一部分 我有一个这些按钮的数组 我想获取索引使用按钮的find 方法 就像这样 func doSomethingWithThisButtonInd
  • Javascript 动态地将函数附加到对象

    如何将函数动态附加到javascript对象 例如 如果动态附加函数是attach 那么我应该能够将函数fn附加到onject obj 如下所示 attach obj fn alert 1 function attach obj fnNam
  • zlib 直接用于解压 iPhone 的 zip 文件夹

    是否可以使用 iPhone 上可用的最低 zlib 来解压缩文件夹的 zip 我不想使用开源库 请告诉我实现一段可以解压缩 zip 文件的代码的难度或可能性 正如 JosephH 所说 您不能使用 ZLib 来处理 zip 文件 但您可以使
  • 在 Visual Studio Team Services 中的托管构建代理上进行 Nuget 还原时,找不到 AutoMapper 包 5.1.1

    在 Team Services 以前的 VSO 中托管的构建代理上恢复 AutoMapper 确实是一个奇怪的问题 它只是失败并显示警告 无法找到 AutoMapper 包的版本 5 1 1 我们有一个自定义的私有 nuget 存储库 因此
  • Spring MVC(异步)与 Spring WebFlux

    我正在尝试了解 Spring WebFlux 到目前为止我发现的东西在核心都是反应式的 没有Servlet API 每个请求没有线程 HTTP 2 服务器推送 应用程序 流 json 但是 Spring MVC 中的异步调用有什么区别呢 我
  • GCC -fstack-check 选项在 C 中引发什么异常

    根据 gcc 文档 fstack check 生成代码以验证您没有超出堆栈边界 请注意 此开关实际上并不导致检查完成 而是执行检查 操作系统必须这样做 该切换会导致代码生成 以确保操作系统看到正在扩展的堆栈 我的假设是这个额外的代码将生成异
  • 如何在 JavaScript 中进行字符串插值?

    考虑这段代码 var age 3 console log I m age years old 除了字符串连接之外 还有其他方法可以将变量的值插入到字符串中吗 从 ES6 开始 你可以使用模板文字 https developer mozill
  • 优化计算 200 万以下所有素数总和的 Haskell 代码

    欧拉计划中的问题 10 我在那里看到了一些讨论 但仅限于 C 我用下面的代码来计算 print sum sieve 2 2000000 where sieve sieve x xs x sieve filter 0 mod x xs 需要很
  • Pandas:使用数据帧的多列作为另一个数据帧的索引

    我有一个包含我的数据的大型数据框 以及另一个具有相同第一维度的数据框 其中包含有关每个时间点的元数据 例如 试验编号是什么 试验类型是什么 我想要做的是使用 元数据帧 的值对大数据帧进行切片 我想将它们分开 而不是将数据数据帧存储为较大数据
  • 最快的 Sobel 边缘检测 C#

    我想制作一个实现索贝尔边缘检测的程序 这是我的代码 private Bitmap SobelEdgeDetect Bitmap ori Bitmap b original Bitmap bb original int width b Wid
  • Android:如何将相机结果保存到私人文件

    我正在尝试从相机获取图像并将其直接保存到我的应用程序的私有文件目录中 出于安全考虑 该图像不应随时公开访问 一般来说 授予私有文件临时访问权限的方法是使用 ContentProvider 并在 Intent 中设置 GRANT WRITE
  • Oracle BLOB 提取非常慢

    从我管理的 oracle 10gR2 10 2 05 数据库中提取 BLOBS 时 我遇到性能问题 我有大约 400 个存储为 BLOBS 的文件 我需要将它们写入文件系统 下面是我的代码 当我执行这个过程时 前 8 个左右的文件会在几秒钟
  • document.domain 更改后无法在 IE 中访问 about:blank iframe

    有谁知道创建一个about blankIE 中页面上的 iframe 时document domain已经改变 IE 似乎不允许在之后访问空 动态 iframedocument domain财产已被改变 例如 假设您正在动态创建一个 ifr
  • NGinx 和 Django,提供大文件 (3gb+)

    我在提供大文件下载 上传 3GB 时遇到一些问题 由于我使用的是 Django 我猜想提供文件的问题可能来自 Django 或 NGinx 在我启用 NGinx 的网站中 我有 server client max body size 4G
  • TF10139 错误:tf checkin 命令的变更集注释策略中存在内部错误

    我在构建定义 vNext 中添加了一个 power shell 步骤 我想在构建过程中执行 Tf checkin 命令来签入一个文件 对于强制签到评论 我们只有一项签到政策 我从 tf checkin 命令开始 并通过了一些障碍才成功签入我
  • 重构函数错误 - “不是此工作区中 Xcode 3 项目中任何目标的构建阶段的一部分,因此无法重构”

    尝试通过 XCode 4 1 中类别的 h 文件中的 refactor gt rename 按钮重命名函数的名称 我收到此错误 错误和正文 UINavigationController ZG h 不属于此工作区中 Xcode 3 项目中任何
  • JVM是编译器还是解释器?

    我有一个关于 JVM 的非常基本的问题 它是编译器还是解释器 如果是解释器 那么JVM内部存在的JIT编译器呢 如果两者都不是 那么 JVM 到底是什么 我不想要jVM的将字节代码转换为机器特定代码等的基本定义 首先 让我们清楚地了解以下术
  • paypal REST API 的信用卡类型变量

    Paypal Rest API 文档中是否有一个列表列出了我应该为信用卡类型提供的字符串 我知道其中一个是 签证 但其他的呢 贝宝接口 https developer paypal com webapps developer docs ap
  • 如何在 Airflow 上跳过任务?

    我想了解 Airflow 是否支持跳过 DAG 中的任务以进行临时执行 假设我的 DAG 图如下所示 任务1 gt 任务2 gt 任务3 gt 任务4 我想从任务 3 手动启动我的 DAG 最好的方法是什么 我读过关于ShortCircui
  • 是否有可能在 C 中伪造文件流,例如 stdin?

    我正在开发一个没有文件系统的嵌入式系统 我需要执行从通过命令 如参数 指定的文件或直接从标准输入指定的文件中获取输入数据的程序 我知道可以使用此答案中的方法用二进制文件烘焙文件数据 C C with GCC 静态地将资源文件添加到可执行文件