我正在尝试运行一个进程并从 InputStreamReader 读取它的数据,但它以一种奇怪的方式失败。
可执行文件是“ip neigh show”
当尝试通过 adb shell 从连接的设备运行命令时,该命令执行正常并正确显示数据。
但是当试图从 kotlin 代码中执行它时,它会以退出代码 1 退出,并且 InputStreamReader 也显示空数据。
这就是我正在尝试的方式:
val p = Runtime.getRuntime().exec("ip neigh show")
InputStreamReader(p!!.inputStream).forEachLine fori@{ line ->
val teDhenat = line.split("\\s+".toRegex())
if (teDhenat[0] == ip) {
if (teDhenat.size < 4) {
return@fori
} else {
uGjet = true
macAddress = teDhenat[4]
return@fori
}
}
}
问题似乎发生在该行:val p = Runtime.getRuntime().exec("ip neigh show")
但我不明白为什么。
也试过了val p = Runtime.getRuntime().exec("/system/bin/ip neigh show")
,还是一样。
我也尝试过使用ProcessBuilder()
它也不起作用。
编译和目标 SDK 为 31 手机是运行 Android 11 (SDK 30) 的小米
PS:我也对其他可执行文件使用相同的逻辑,它们工作得很好,比如“ping”、“top”等......