簡體   English   中英

在Android上以編程方式運行ps shell命令

[英]Running ps shell command on Android programmatically

我正在嘗試在Android應用上執行ps命令,如下所示:

try {
    Process process = Runtime.getRuntime().exec("ps");
    BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
    int read;
    char[] buffer = new char[4096];
    StringBuffer output = new StringBuffer();
    while ((read = reader.read(buffer)) > 0) {
        output.append(buffer, 0, read);
    }
    reader.close();

    // Waits for the command to finish.
    process.waitFor();
    Log.d(TAG, output.toString());
} catch (IOException e) {

} catch (InterruptedException e) {

}

我正在帶有棒棒糖的三星Galaxy S6上進行測試。 它可以運行,但是我所看到的只是root擁有的進程。

在配備棉花糖的Nexus 5上,我看不到根擁有的進程,但看到了許多其他進程。 它仍然不是完整列表。

Android中是否有某種保護措施可以阻止我在某些設備/ OS版本中查看完整的進程列表?

是的,有多種機制。 在Linux上, ps通過/proc文件系統工作。 到目前為止,Nougat是最嚴格的,使用platform / system / core.git#c39ba5a :您根本看不到任何/proc/PID屬於其他用戶。

在/ proc上啟用hidepid = 2

將以下安裝選項添加到/ proc文件系統:

 hidepid=2,gid=3009 

除非您在組3009(又名AID_READPROC)中,否則此更改將阻止/ proc訪問。

/proc訪問也受到platform / system / sepolicy.git中各種規則的限制,其中一些規則適用於早期版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM