有誰知道哪個系統調用屬於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