【问题标题】:Run multiple commands at once in RootTools/RootShell?在 RootTools/RootShell 中一次运行多个命令?
【发布时间】:2018-06-27 12:50:54
【问题描述】:
我正在使用 RootTools 库,我需要执行两个命令。第一个运行二进制文件,第二个向它发送 SIGINT 以杀死它。
RootTools(据我所知)一次只能打开一个root shell,所以命令只能一个一个地执行。这是一个问题,因为我在运行二进制文件后无法停止它。
我该如何做以下任何事情?
- 一次执行两个命令,这样我就可以在二进制文件运行时运行我的 kill 命令
- 以其他方式将 SIGINT 发送到我的本机进程(例如,使用 RootTools 函数)
我需要使用 RootTools,因为它是我从程序中读取标准输出的唯一方法。不过,如果有其他方法可以做到这一点,请发表评论。
【问题讨论】:
标签:
android
linux
process
runtime.exec
roottools
【解决方案1】:
你认为你可以连接命令吗?
假设我想启动一个find 命令,但如果需要 5 秒,我希望它停止:
find / & sleep 5 && kill $!
我们也可以获得更适合的一个班轮(即忽略标准错误,仅在需要时才杀死等)。
您也可以只存储 PID 并稍后将其杀死(注意,如果守护程序停止运行,操作系统可以重用其 PID):
-
在 root shell 中运行守护进程
my-daemon >/dev/null & echo "PID: $!"
-
用 Java 解析输出并存储 PID (SharedPreferences?)
var pid = outputLine.split(" ")[1]
-
稍后,使用 root shell 停止守护进程
kill <pid>