【发布时间】:2021-03-03 08:19:30
【问题描述】:
我有一个生成子进程并使用 stdin/stdout/stderr 与之通信的应用程序。我可以修改生成命令。
我想要实现的是在从应用程序生成之前手动运行这个子进程(例如,因为我想在调试器中运行)并使用标准生成附加到它。
有可能吗? 我知道有 /proc/PID/fd/0 等等。但我仍然不知道是否可以通过生成另一个“模拟进程”来连接它。
【问题讨论】:
-
实际上不可能更改现有进程的 I/O 连接。
-
有可能,我可以控制这两个进程(意味着我可以实现任何东西),但我希望我可以使用当前界面不费吹灰之力地做到这一点。 (这是应用程序生成子进程并使用标准输入/标准输出进行通信)
-
正常机制是fork,redirect I/O,exec。执行后,您无法从进程外部更改 I/O 连接。
-
似乎最简单的方法忘记附加到标准输入/标准输出,退一步添加实现选项以通过套接字进行通信,而不是产生一个新进程。
-
如果您可以更改子进程的代码,您还有更多选择。我假设你需要一些更通用的东西。