2011-06-26 67 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