有谁知道哪个系统调用属于I/O组件(WiFi,SDcard或GSP等)?如何使用“strace”知道组件的系统调用
我使用strace
跟踪应用程序,而现在,我有一个应用程序(A应用程序只是有开/关功能的WiFi,A的PID = 999),我用cmd以键盘命令
./strace -p 999 -t -v
如果我用这个命令./strace -p 999 -t -v -e trace=open,close,read,write
输出例如:
04:18:11.473383 read(52, "D", 1) = 1
04:18:11.476191 write(39, "W", 1) = 1
04:18:11.477198 write(53, "u", 1) = 1
04:18:11.478114 read(38, "W", 16) = 1
04:18:11.583430 read(52, "D", 1) = 1
04:18:11.584315 write(39, "W", 1) = 1
04:18:11.586787 write(53, "u", 1) = 1
04:18:11.587824 read(38, "W", 16) = 1
04:18:11.794337 read(38, "W", 16) = 1
04:18:11.800227 read(38, "W", 16) = 1
04:18:11.802210 syscall_983042(0x4e1d5428, 0x4e1d542c, 0, 0xfff, 0x408e54d8, 0x4e1d5428, 0x4e1d8469, 0xf0002, 0, 0x4e1d542c, 0xf81ef003, 0x14, 0, 0xbee5c738, 0x408b6093, 0x4006c8fc, 0x40000010, 0x4e1d5428, 0, 0, 0xc764, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) =
但输出有那么多......我无法解释那么......
所以,我想知道
- 什么系统调用名称是属于组件(属于WiFi或属于SD卡)
- 我如何使用组件来获得组件的系统调用(什么命令,我应该UE的?)
- 应该如何使用“strace的”到跟踪SDcard?我是否应该有B应用程序(B应用程序只是打开SD卡或关闭SD卡?)我不知道我可以做什么实验。
你好,感谢回复! 您的回应: 【所以无法通过查看系统调用知道】 我不知道这是什么意思? ,因为我想知道跟踪组件的系统调用。 Strace可以跟踪应用程序的pid, 所以,我有一个应用程序(只有wifi开/关功能,A应用程序是这样的:http://ppt.cc/DYbJ) 如果可能知道哪个系统调用属于wifi开/关 另一个问题, strace的输出有这个 【syscall_983042(0x4e1d5428,0x4e1d542c,...】 什么意思???很多“syscall_983042” – user3192332
如果我追踪“愤怒的小鸟”,如果可能知道wifi打开/关闭打开,并打开SDcard(这意味着运行愤怒的小鸟必须使用wifi,SD卡或其他组件,所以我想每个组件的打开或关闭) – user3192332
Linux比你想要做的更复杂一点。应用程序所做的系统调用不会寻址到系统中非常接近硬件的组件。应用程序可以与文件系统或套接字层进行通信。内核可以调用WiFi或SD等硬件子系统。如果你想从strace中找出你需要考虑在他们的上下文中的调用。 – Vlad