gpt4 book ai didi

c - 在不相关的进程之间设置IPC

转载 作者:行者123 更新时间:2023-11-30 17:50:27 25 4
gpt4 key购买 nike

我想将共享库注入(inject)到进程中(我使用 ptrace() 来完成该部分),然后能够将共享库的输出返回到调试器中正在使用某种形式的 IPC 进行编写。我的本能是使用管道,但唯一真正的要求是:

  • 我不想在文件系统上存储任何内容来促进通信,因为它只会在调试器运行时持续存在。
  • 我想要一个可移植的 Unix 解决方案(因此 Unix 标准系统调用是理想的选择)。

我遇到的问题是,据我所知,如果我在调试器中调用pipe(),则无法传递管道的“发送”端到目标进程,反之亦然。我可以设置共享内存,但我认为这需要在某处创建一个文件,以便我可以从两个进程引用内存段。当其他调试器附加到已经开始运行的进程时,如何捕获输出?

最佳答案

我假设您需要一个用于业务逻辑代码(我的意思是应用程序)的调试系统。根据我的经验,此类问题可以通过下面解释的系统设计来解决。 (我的经验是在 C++ 方面,我认为这同样适用于基于 C 的系统。)

  1. 拥有一个记录器系统(一个单独的进程)。这将包含 - 记录器管理器和日志记录代码 - 它将负责将日志转储到硬盘中。
  2. 每个应用程序实例(在 Unix 中运行的进程)都将通过套接字与该进程通信。因此,您可以拥有自己的消息传递协议(protocol),并通过基于套接字的通信与记录器系统进行通信。
  3. 稍后,对于每个应用程序 - 都有一个可以关闭/打开日志的开关。这样您就可以拥有一个工具 - 向此进程发送信号以打开/关闭消息记录。

从高层次来看,这是开发日志系统的最通用方法。如果您需要任何信息 - 请发表评论。我会尽力回答。

关于c - 在不相关的进程之间设置IPC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17269080/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com