dumpsys命令是Android中非常實用的命令,通過在dumpsys程序中發起向server端的binder調用來執行server端的dump方法,
打印出server端的相應信息。
之前的dumpsys的代碼實現比較清晰,似乎是Android 6後,進行了修改,很上去複雜了不少
frameworks/native/cmds/dumpsys/dumpsys.cpp
185 int sfd[2];
186
187 if (pipe(sfd) != 0) {
188 aerr << "Failed to create pipe to dump service info for " << service_name
189 << ": " << strerror(errno) << endl;
190 continue;
191 }
192
193 unique_fd local_end(sfd[0]);
194 unique_fd remote_end(sfd[1]);
使用了管道,把寫端的fd傳給了遠程服務,可以從讀端的fd獲取數據,通過管道的中轉,可以進行超時處理
thefuck工具似乎就是使用了類似的管道處理機制,獲取到命令的打印信息,再把輸錯的命令修正過來
➜ puthon No command 'puthon' found, did you mean: Command 'python' from package 'python-minimal' (main) Command 'python' from package 'python3' (main) zsh: command not found: puthon ➜ fuck python [enter/↑/↓/ctrl+c] Python 3.4.2 (default, Oct 8 2014, 13:08:17) ...
https://www.jianshu.com/p/58675fdbe9e2
https://github.com/nvbn/thefuck