2011-06-26 66 views
2

我在运行程序的arm设备上嵌入了gnu/linux,我可以telnet它。我想知道程序如何向设备发送命令,所以我可以让自己的程序发送这些命令,但是当我需要它时。我很确定它写入/dev
我如何知道/dev(我知道它不是真正的文件)程序正在写入哪个文件?
用于armv5tejl芯片和2.6.27.47内核的参考。我也有它的工具链,所以我可以编译程序。搞清楚程序通信

回答

5

使用lsof(列出打开的文件),您可以看到每个进程打开了哪些文件。您应该找到您的进程在此使用的设备节点。或者,您可以使用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