處理機

public final class ProcessUtil
extends Object

java.lang.Object
   ↳ com.android.sts.common.ProcessUtil


各種輔助程式尋找、等待及終止裝置上的程序

摘要

巢狀類別

class ProcessUtil.KillException

 

常數

long PROCESS_POLL_PERIOD_MS

long PROCESS_WAIT_TIMEOUT_MS

公用方法

static Optional<IFileEntry> findFileLoadedByProcess(ITestDevice device, String process, String filenameSubstr)

傳回由指定程序 (含指定名稱) 載入的第一個檔案項目

static Optional<List<String>> findFilesLoadedByProcess(ITestDevice device, int pid, Pattern filePattern)

傳回由指定程序載入的指定檔案名稱。

static Optional<String> getProcessName(ITestDevice device, int pid)

從 /proc/pid/cmdline 取得內容。

static boolean killAll(ITestDevice device, String pgrepRegex, long timeoutMs, boolean expectExist)

將 SIGKILL 傳送至符合模式的所有程序。

static boolean killAll(ITestDevice device, String pgrepRegex, long timeoutMs)

將 SIGKILL 傳送至符合模式的所有程序。

static void killPid(ITestDevice device, int pid, long timeoutMs)

將 SIGKILL 傳送至處理程序,並等待程序結束。

static void killPid(ITestDevice device, int pid, int signal, long timeoutMs)

將信號傳送至處理程序,然後等待信號結束。

static Optional<List<String>> listOpenFiles(ITestDevice device, int pid)

傳回指定程序目前開啟的檔案名稱。

static Optional<Integer> pidOf(ITestDevice device, String pgrepRegex)

取得與傳遞至 `pgrep` 模式相符的單一 Pid。

static Optional<Map<Integer, String>> pidsOf(ITestDevice device, String pgrepRegex)

取得與傳遞至 `pgrep` 模式相符的 Pid。

static void waitPidExited(ITestDevice device, int pid)

等待程序結束。

static void waitPidExited(ITestDevice device, int pid, long timeoutMs)

等待程序結束。

static Map<Integer, String> waitProcessRunning(ITestDevice device, String pgrepRegex, long timeoutMs)

等待指定規則運算式的執行中程序。

static Map<Integer, String> waitProcessRunning(ITestDevice device, String pgrepRegex)

等待指定規則運算式的執行中程序。

static AutoCloseable withProcessKill(ITestDevice device, String pgrepRegex, Runnable beforeCloseKill, long timeoutMs)

在測試開始和結束時終止程序。

static AutoCloseable withProcessKill(ITestDevice device, String pgrepRegex, Runnable beforeCloseKill)

在測試開始和結束時終止程序。

常數

PROCESS_POLL_PERIOD_MS

public static final long PROCESS_POLL_PERIOD_MS

常數值: 250 人 (0x00000000000000F)

PROCESS_WAIT_TIMEOUT_MS

public static final long PROCESS_WAIT_TIMEOUT_MS

常數值: 10,000 名 (0x000000000002710)

公用方法

findFileLoadedByProcess

public static Optional<IFileEntry> findFileLoadedByProcess (ITestDevice device, 
                String process, 
                String filenameSubstr)

傳回由指定程序 (含指定名稱) 載入的第一個檔案項目

參數
device ITestDevice:要執行的裝置

process String:要尋找的程序模式

filenameSubstr String:程序載入的檔案名稱/路徑的一部分

傳回
Optional<IFileEntry> 裝置上檔案路徑的 IFileEntry (如果有)。

擲回
DeviceNotAvailableException

findFilesLoadedByProcess

public static Optional<List<String>> findFilesLoadedByProcess (ITestDevice device, 
                int pid, 
                Pattern filePattern)

傳回由指定程序載入的指定檔案名稱。

參數
device ITestDevice:要執行的裝置

pid int:要搜尋的程序 ID

filePattern Pattern:要傳回的檔案名稱模式

傳回
Optional<List<String>> 是篩選檔案的選用項目;找不到程序或開啟 無法讀取 個檔案。

擲回
DeviceNotAvailableException

getProcessName

public static Optional<String> getProcessName (ITestDevice device, 
                int pid)

從 /proc/pid/cmdline 取得內容。

參數
device ITestDevice:要使用的裝置

pid int:用來取得名稱的程序 ID

傳回
Optional<String> /proc/pid/cmdline 內容的選用字串;如果 pid 不能空白 尋找

擲回
DeviceNotAvailableException

殺光全部

public static boolean killAll (ITestDevice device, 
                String pgrepRegex, 
                long timeoutMs, 
                boolean expectExist)

將 SIGKILL 傳送至符合模式的所有程序。

參數
device ITestDevice:要使用的裝置

pgrepRegex String:代表 pgrep 規則運算式的字串。

timeoutMs long:擲回 TimeoutException 前的等待時間

expectExist boolean:是否在未終止任何程序時擲回例外狀況

傳回
boolean 是否有任何程序終止

擲回
DeviceNotAvailableException
TimeoutException
ProcessUtil.KillException

殺光全部

public static boolean killAll (ITestDevice device, 
                String pgrepRegex, 
                long timeoutMs)

將 SIGKILL 傳送至符合模式的所有程序。

參數
device ITestDevice:要使用的裝置

pgrepRegex String:代表 pgrep 規則運算式的字串。

timeoutMs long:擲回 TimeoutException 前的等待時間

傳回
boolean 是否有任何程序終止

擲回
DeviceNotAvailableException
TimeoutException
ProcessUtil.KillException

killPid

public static void killPid (ITestDevice device, 
                int pid, 
                long timeoutMs)

將 SIGKILL 傳送至處理程序,並等待程序結束。

參數
device ITestDevice:要使用的裝置

pid int:等待結束的程序 ID

timeoutMs long:擲回 TimeoutException 前的等待時間

擲回
DeviceNotAvailableException
TimeoutException
ProcessUtil.KillException

killPid

public static void killPid (ITestDevice device, 
                int pid, 
                int signal, 
                long timeoutMs)

將信號傳送至處理程序,然後等待信號結束。

參數
device ITestDevice:要使用的裝置

pid int:等待結束的程序 ID

signal int:要傳送至程序的信號

timeoutMs long:擲回 TimeoutException 前的等待時間

擲回
DeviceNotAvailableException
TimeoutException
ProcessUtil.KillException

列出開啟檔案

public static Optional<List<String>> listOpenFiles (ITestDevice device, 
                int pid)

傳回指定程序目前開啟的檔案名稱。

參數
device ITestDevice:要執行的裝置

pid int:要搜尋的程序 ID

傳回
Optional<List<String>> 選擇性是開啟檔案的選用項目;找不到程序或開啟的檔案時為空白 無法讀取。

擲回
DeviceNotAvailableException

pidOf

public static Optional<Integer> pidOf (ITestDevice device, 
                String pgrepRegex)

取得與傳遞至 `pgrep` 模式相符的單一 Pid。在多個符合模式的 PID 時擲回 IllegalArgumentException

參數
device ITestDevice:要使用的裝置

pgrepRegex String:代表 pgrep 規則運算式的字串。

傳回
Optional<Integer> 選用的 pid 整數;如果 pgrep 沒有傳回 EXIT_SUCCESS,則為空白

擲回
DeviceNotAvailableException
IllegalArgumentException

pidsOf

public static Optional<Map<Integer, String>> pidsOf (ITestDevice device, 
                String pgrepRegex)

取得與傳遞至 `pgrep` 模式相符的 Pid。由於 /proc/pid/comm 遭到截斷 `pgrep` 隨 `-f` 傳遞,檢查完整的指令列。

參數
device ITestDevice:要使用的裝置

pgrepRegex String:代表 pgrep 規則運算式的字串。

傳回
Optional<Map<Integer, String>> 選用的 pid 與指令列對應表;如果 pgrep 沒有傳回 EXIT_SUCCESS,則為空白

擲回
DeviceNotAvailableException

waitPidExited

public static void waitPidExited (ITestDevice device, 
                int pid)

等待程序結束。這不等待變革,只是 。雖然可以在不同意見調查之間重複使用 Pid,但不太可能

參數
device ITestDevice:要使用的裝置

pid int:等待結束的程序 ID

擲回
TimeoutException
DeviceNotAvailableException
ProcessUtil.KillException

waitPidExited

public static void waitPidExited (ITestDevice device, 
                int pid, 
                long timeoutMs)

等待程序結束。這不等待變革,只是 。雖然可以在不同意見調查之間重複使用 Pid,但不太可能

參數
device ITestDevice:要使用的裝置

pid int:等待結束的程序 ID

timeoutMs long:擲回 TimeoutException 前的等待時間

擲回
TimeoutException
DeviceNotAvailableException
ProcessUtil.KillException

等候程序執行中

public static Map<Integer, String> waitProcessRunning (ITestDevice device, 
                String pgrepRegex, 
                long timeoutMs)

等待指定規則運算式的執行中程序。

參數
device ITestDevice:要使用的裝置

pgrepRegex String:代表 pgrep 規則運算式的字串。

timeoutMs long:擲回 TimeoutException 前的等待時間

傳回
Map<Integer, String> 從 pidOf(...) 的 pid 到指令對應

擲回
TimeoutException
DeviceNotAvailableException

等候程序執行中

public static Map<Integer, String> waitProcessRunning (ITestDevice device, 
                String pgrepRegex)

等待指定規則運算式的執行中程序。

參數
device ITestDevice:要使用的裝置

pgrepRegex String:代表 pgrep 規則運算式的字串。

傳回
Map<Integer, String> 從 pidOf(...) 的 pid 到指令對應

擲回
TimeoutException
DeviceNotAvailableException

withProcessKill

public static AutoCloseable withProcessKill (ITestDevice device, 
                String pgrepRegex, 
                Runnable beforeCloseKill, 
                long timeoutMs)

在測試開始和結束時終止程序。

參數
device ITestDevice:要使用的裝置

pgrepRegex String:要提供給 pgrep 的終止程序名稱模式

beforeCloseKill Runnable:此函式可執行,任何在終止 您將在測試結束時正常環境中可以是空值。

timeoutMs long:等待程序終止所需的時間 (以毫秒為單位)

傳回
AutoCloseable 會在關閉時再次終止程序的物件

擲回
DeviceNotAvailableException
TimeoutException
ProcessUtil.KillException

withProcessKill

public static AutoCloseable withProcessKill (ITestDevice device, 
                String pgrepRegex, 
                Runnable beforeCloseKill)

在測試開始和結束時終止程序。

參數
device ITestDevice:要使用的裝置

pgrepRegex String:要提供給 pgrep 的終止程序名稱模式

beforeCloseKill Runnable:此函式可執行,任何在終止 您將在測試結束時正常環境中可以是空值。

傳回
AutoCloseable 會在關閉時再次終止程序的物件

擲回
DeviceNotAvailableException
TimeoutException
ProcessUtil.KillException