Linux: Capture a saída de um processo já em execução (em puro C!)

Minha situação é a seguinte: Eu tenho muitos aparelhos pequenos (bem perto dos roteadores, não exatamente, mas de qualquer maneira isso é irrelevante); eles estão executando uma distribuição Linux básica do MIPS.

Para controlá-los, pode-se telnetar lá (através da porta serial) e emitir comandos para um shell interativo do tipo bash, que depois grava de volta alguma saída. A entrada e a saída do shell estão anexadas a / dev / ttyAS0.

Agora, eu gostaria de automatizar tudo isso, ou seja, escrever um programa que será executado dentro do dispositivo, seja um pequeno servidor escutando alguma porta e que repasse qualquer comando para o referido shell, capture a saída do shell e retransmita-o de volta para quem entrou em contato com o servidor.

EU:

1) pode instalar (pequenos, <500KB) programas dentro do dispositivo 2) não pode modificar o SO, scripts de inicialização, shell, qualquer coisa 3) ter acesso root 4) saber como escrever um servidor SOAP 5) saber como obter uma mensagem SOAP, traduza-a em um comando e injete-a em / dev / ttyAS0 6) NÃO SABE capturar a resposta do shell 7) saiba como, tendo a resposta do shell, traduza-a novamente em uma mensagem SOAP e responda ao solicitante original .

Então, basicamente, o problema é 6): como, tendo injetado uma string no / dev / ttyAS0 e, assim, tendo feito o shell executá-lo, capturar a saída do shell?

Estou ciente

http://etbe.coker.com.au/2008/02/27/redirecting-output-from-a-running-process/

ou seja, eu sei que eu poderia mudar o stdout do shell se tivesse o GDB (ou strace) rodando dentro da caixa, mas não consigo instalá-lo lá - é muito grande e, de qualquer forma, essa abordagem parece muito com um hack.

Então, resumindo:

Como o root pode capturar o stdout de um processo já em execução, IN PURE C, sem gdb ou strace, sem acesso à maneira como o processo é iniciado?

Ou - quase equivalente - como capturar o que está sendo gravado em um terminal, IN PURE C?

questionAnswers(2)

yourAnswerToTheQuestion