【问题标题】:How to capture and modify read and writes on file using Dlang or cpp如何使用 Dlang 或 cpp 捕获和修改文件的读取和写入
【发布时间】:2017-03-20 15:29:25
【问题描述】:

假设另一个程序正在写入或读取特定文件。当它这样做时,我需要能够读取或写入并以我喜欢的方式处理(例如,程序 X 想要读取位于 /path/file.txt 的文件,但程序 Y(我的程序)需要读取“请求”,而是为程序 X 提供位于 /path/file2 的另一个文件的前 2KiB 加密)。本质上,每当读取或写入指定文件时,都会调用我的程序,它将处理 Dlang 或 C++ 中的读取或写入请求。我不能为此创建一个新的文件系统:(并且它至少必须与 Linux 一起工作(所以任何特定于 Linux 的东西都可以工作)。此外,我响应读取或写入而不是预处理结果是至关重要的,对不起示例中不清楚。

【问题讨论】:

  • 您可以使文件成为您的程序打开的命名管道。
  • 搜索并了解 inotify
  • @Someprogrammerdude 我调查了一下,它并没有让我“重定向”读取或写入请求,只告诉我它们发生了。
  • @Barmar,命名管道可以模拟任何类型的文件(所以我可以将它作为 txt 文件打开,编辑它,编辑将传递给我的程序并能够接受这些编辑并对另一个文件执行某些操作或更改这些编辑)?
  • 它只是一个字节流,你的程序可以是读卡器也可以是写卡器。我不确定您是否可以将其设为可读写文件。

标签: c++ linux d


【解决方案1】:

您需要的是一个可查找的 FIFO(命名管道)。它已被提出,但据我所知尚未实现(检查 Linux 内核更改日志,也许有但我不知道)。

正如建议的那样,新的微型文件系统是您的最佳选择。幸运的是,使用 FUSE 项目编写一个非常简单。

【讨论】:

    猜你喜欢
    • 2023-02-18
    • 1970-01-01
    • 2015-09-04
    • 1970-01-01
    • 1970-01-01
    • 2012-09-15
    • 2015-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多