ProcessUtil
public
final
class
ProcessUtil
extends Object
java.lang.Object 中
|
↳ |
com.android.sts.common.ProcessUtil
|
用于查找、等待和终止设备上进程的各种帮助程序
摘要
公共方法 |
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 个
(0x00000000000000fa)
进程 WAIT_TIMEOUT_MS
public static final long PROCESS_WAIT_TIMEOUT_MS
常量值:
10,000 次
(0x0000000000002710)
公共方法
findFileLoadedByProcess
public static Optional<IFileEntry> findFileLoadedByProcess (ITestDevice device,
String process,
String filenameSubstr)
返回由指定进程加载的具有指定名称的第一个文件的文件条目
参数 |
device |
ITestDevice :运行应用的设备 |
process |
String :要查找的进程的 pgrep 模式 |
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 :在未终止任何进程时是否应抛出异常 |
全部终止
public static boolean killAll (ITestDevice device,
String pgrepRegex,
long timeoutMs)
将 SIGKILL 发送到与某种模式匹配的所有进程。
参数 |
device |
ITestDevice :要使用的设备 |
pgrepRegex |
String :表示 pgrep 的正则表达式的字符串 |
timeoutMs |
long :等待多长时间后抛出 TimeoutException |
killPid
public static void killPid (ITestDevice device,
int pid,
long timeoutMs)
将 SIGKILL 发送至进程并等待其退出。
参数 |
device |
ITestDevice :要使用的设备 |
pid |
int :等待退出的进程的 ID |
timeoutMs |
long :等待多长时间后抛出 TimeoutException
|
killPid
public static void killPid (ITestDevice device,
int pid,
int signal,
long timeoutMs)
向进程发送信号并等待其退出。
参数 |
device |
ITestDevice :要使用的设备 |
pid |
int :等待退出的进程的 ID |
signal |
int :要发送给进程的信号 |
timeoutMs |
long :等待多长时间后抛出 TimeoutException
|
listOpenFiles
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 已被截断,
使用 `-f` 传递 `pgrep` 以检查完整的命令行。
参数 |
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
|
waitPidExited
public static void waitPidExited (ITestDevice device,
int pid,
long timeoutMs)
等待进程退出。这并不意味着一切发生变化,只是简单地
不存在。可以(但不太可能)在轮询之间重复使用 pid
参数 |
device |
ITestDevice :要使用的设备 |
pid |
int :等待退出的进程的 ID |
timeoutMs |
long :等待多长时间后抛出 TimeoutException
|
waitProcessRunning
public static Map<Integer, String> waitProcessRunning (ITestDevice device,
String pgrepRegex,
long timeoutMs)
等待给定正则表达式找到正在运行的进程。
参数 |
device |
ITestDevice :要使用的设备 |
pgrepRegex |
String :表示 pgrep 的正则表达式的字符串 |
timeoutMs |
long :等待多长时间后抛出 TimeoutException |
返回 |
Map<Integer, String> |
从 pidsOf(...) 到命令映射的 pid
|
抛出 |
TimeoutException |
|
DeviceNotAvailableException |
|
waitProcessRunning
public static Map<Integer, String> waitProcessRunning (ITestDevice device,
String pgrepRegex)
等待给定正则表达式找到正在运行的进程。
参数 |
device |
ITestDevice :要使用的设备 |
pgrepRegex |
String :表示 pgrep 的正则表达式的字符串 |
返回 |
Map<Integer, String> |
从 pidsOf(...) 到命令映射的 pid
|
抛出 |
TimeoutException |
|
DeviceNotAvailableException |
|
withProcessKill
public static AutoCloseable withProcessKill (ITestDevice device,
String pgrepRegex,
Runnable beforeCloseKill,
long timeoutMs)
在测试开始和结束时终止进程。
参数 |
device |
ITestDevice :要使用的设备 |
pgrepRegex |
String :要终止并提供给 pgrep 的进程的名称模式 |
beforeCloseKill |
Runnable :对于任何需要在终止
并在正常环境中完成此过程。可以为 null。 |
timeoutMs |
long :等待进程终止的等待时间(以毫秒为单位) |
返回 |
AutoCloseable |
将在关闭后再次终止进程的对象
|
withProcessKill
public static AutoCloseable withProcessKill (ITestDevice device,
String pgrepRegex,
Runnable beforeCloseKill)
在测试开始和结束时终止进程。
参数 |
device |
ITestDevice :要使用的设备 |
pgrepRegex |
String :要终止并提供给 pgrep 的进程的名称模式 |
beforeCloseKill |
Runnable :对于任何需要在终止
并在正常环境中完成此过程。可以为 null。 |
返回 |
AutoCloseable |
将在关闭后再次终止进程的对象
|