2011-06-26 5 views
2

プログラムを実行しているアームデバイスにgnu/linuxが組み込まれており、私はそれをtelnetできます。私は、プログラムがどのようにコマンドをデバイスに送信するのか知りたいので、自分のプログラムを作成して、それらのコマンドを送信することができます。私はそれが/devの何かに書いていると確信しています。
/dev(実際にはファイルではないことがわかっています)のどのファイルがプログラムに書き込まれているのか、どういうファイルが書かれているのですか?
2.6.27.47カーネルのarmv5tejlチップを参照してください。私はツールチェーンも持っているので、プログラムをコンパイルすることができます。プログラム通信を理解する

答えて

5

lsof(list open files)を使用すると、各プロセスが開いているファイルを確認できます。プロセスが使用するデバイスノードが見つかります。または、ps auxを使用してプログラムのPID(プロセスID)を調べ、プロセスの開いているファイル記述子を/proc/$pid/fdに見てください。$ pidはプログラムのPIDです。

プログラムが何を書いているか調べるには、おそらく最も簡単なことは、プログラムが行うすべてのシステムコールをトレースするためにstraceを使うことです。 (straceを使うと、プログラムが開いているファイルを見つけることもできます)また、プログラムが書き込むファイルを、可能であれば空のファイルに置き換えたり、必要に応じて、受信するすべてのものを記録するダミーカーネルドライバ。

+0

カーネルを変更することはできません。ブートするたびに何らかの種類のROMからロードされます。システムが起動した後に実行できます。 – Dani

+0

/proc/$ pid/fd /数字はすべて – Dani

+0

ls -l/proc/$ pid/fdを実行すると、ディレクトリ内のシンボリックリンクが指すファイルが表示されます。デバイスノードが書き込み可能なパーティション上にある場合は、ノードを空のファイルで置き換えることができます。カーネルがロード可能なモジュールをサポートしている場合、独自のドライバをロードできるはずです(ただし、必要ではありません)。 – Antti

関連する問題