私の状況は次のとおりです:私は小さなギズモをたくさん持っています(ルータにかなり近いですが、とにかく無関係です)。彼らはベアボーンのMIPSベースのLinuxディストリビューションを実行しています。Linux:既に実行中のプロセスの出力をキャプチャします。(純粋なC!)
これらを制御するには、(シリアルポート経由で)telnetして対話型のbashのようなシェルにコマンドを発行し、出力を書き戻します。シェルの入出力はどちらも/ dev/ttyAS0にアタッチされています。
ここで私はすべてを自動化したいと思います。ギズモの中で実行されるプログラムを書いてください。あるポートでリッスンする小さなサーバーになります。そして、そのシェルにコマンドを渡し、サーバに接続している人には誰でも中継できます。
I:
1)インストールすることができます(小、ギズモ 2)変更することはできませんOS、スタートアップスクリプト、シェル、何 3)内部< 500キロバイト)のプログラムはrootアクセス権を持っている 4) SOAPサーバを書く方法を知っている 5)SOAPメッセージを取得し、それをコマンドに変換して/ dev/ttyAS0に注入する方法を知っている 6)DONT KNOWはシェルの返信をキャプチャする方法を教えてください。シェルの応答を返し、それをSOAPメッセージに戻して元の照会者に返信します。
基本的に、問題は6)です:どのようにして/ dev/ttyAS0に文字列を注入してシェルに実行させたのか、シェルの出力をキャプチャしますか?
私はつまり、私は私はGDB(またはstraceのを)持っていた場合、私はボックス内で実行されているシェルの標準出力を変えることができることを知っているが、私はそこにそれをインストールすることはできません
http://etbe.coker.com.au/2008/02/27/redirecting-output-from-a-running-process/
の認識しています - それはですあまりにも大きく、とにかくこのアプローチはあまりにもハックのようです。だから、
、要約:
をルートは、プロセスが開始された方法へのアクセスがないと、GDBまたはstraceのなしで、PURE Cには、すでに実行中のプロセスの標準出力をキャプチャすることができますどのように?
- ほぼ同等 - 端末に書き込まれているものをキャプチャする方法、IN PURE C?
非常に困難です。 :-p – maxelost