dumpsys中的管道與thefuck的原理猜想

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

 

 

發佈了339 篇原創文章 · 獲贊 15 · 訪問量 34萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章