Linux:捕获已经运行的过程的输出(纯C!)[英] Linux: Capture output of an already running process ( in pure C! )

本文是小编为大家收集整理的关于Linux:捕获已经运行的过程的输出(纯C!)的处理方法,想解了Linux:捕获已经运行的过程的输出(纯C!)的问题怎么解决?Linux:捕获已经运行的过程的输出(纯C!)问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我的情况如下:我有很多小的小发(离路由器很近,不完全是,但无论如何都是无关紧要的);他们正在运行基于MIPS的Linux发行版.

为了控制它们,可以在那里(通过串行端口)telnet并向类似bash的外壳发出命令,然后写回一些输出.外壳的输入和输出都附加到/dev/ttyas0.

现在,我想自动化所有这些,即编写一个将在Gizmo内运行的程序,是在某些端口上侦听的小服务器,并且会将任何命令传递给上述Shell,捕获Shell的输出并将其转交给与服务器联系的人.

i:

1)可以在Gizmo内部安装(小,<500kb)程序 2)无法修改操作系统,启动脚本,外壳,任何东西 3)有根访问 4)知道如何编写SOAP服务器 5)知道如何获取肥皂消息,将其转换为命令,然后将其注入/dev/ttyas0 6)不知道如何捕获外壳的答复 7)知道如何,将其回复,将其翻译回肥皂消息并回复原始询问者.

基本上,问题是6):如何将字符串注入/dev/ttyas0并因此使外壳执行,捕获外壳的输出?

我知道

http://http://etbe .coker.com.au/2008/02/27/重定向 - 逃离-A-a-a-a-a-a-a-aunning-process/

即.我知道,如果我的盒子里运行了GDB(或strace),我可以更改外壳的Stdout,但是我不能在那里安装它 - 它太大了,无论如何,这种方法似乎太像了.

.

所以,总结:

在没有GDB或Strace的情况下,如何捕获已经运行的过程的root stdout,而无需访问该过程的启动方式?

或 - 几乎等效地 - 如何捕获纯C?

中的终端写的内容

推荐答案

您可能想看看 reptyr .尽管

其他推荐答案

您是否尝试过使用 kermit 脚本?我可能会放弃试图在设备上插入更聪明的代理,然后尝试驱动现有界面.

如果您真的想在设备上获取它,则可以将源查看屏幕 kermit 以了解他们如何与ttys互动.

本文地址:https://www.itbaoku.cn/post/359410.html