Android 10 - netstat 执行无法正常工作

标签 android linux shell runtime.exec android-shell

我正在尝试在 Android 应用程序中运行 shell 命令,以检查给定的 tcp 端口 是否打开:

Runtime.getRuntime().exec(arrayOf("/system/bin/sh", "-c", "netstat -tulpn | grep :8080"))

在 Android 版本 < 10 中运行此命令可以正常工作。如果使用了给定的端口,它将进行全面扫描并返回条目。

但在 Android 10 中,它不再起作用了。进程执行将返回:

进程[pid=9534,hasExited=true,exitcode=1]

读取进程的inputStream时,它始终为null,而执行netstat -tulpn |正如预期的那样,来自终端的 grep :8080 将返回一个条目。

正在运行

Runtime.getRuntime().exec(arrayOf("/system/bin/sh", "-c", "netstat -tulpn"))

单独并解析输出,只会显示:

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program Name

根本没有其他数据。

我仅在 Android 10 中遇到此问题,因为对于旧版本它可以正常工作。

Android 10 中有关 shell 命令的内容有什么变化吗?我有必要运行这个命令。 任何帮助将不胜感激...

最佳答案

这很可能是因为 Android 10 中的隐私保护得到了改进。

看这里:https://developer.android.com/about/versions/10/privacy/changes#proc-net-filesystem

关于Android 10 - netstat 执行无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63122056/

相关文章:

java - 匿名类不是抽象的,也不会覆盖(Android + Retrofit)

c - 使用 syslog 函数将日志值插入数据库

javascript - 在 jquery 中按时间戳对数组进行排序

android - 公开 firebase 存储以在 android 上读写

ruby - 自包含 ruby "binary"?

java - 无法在 Linux VM 中找到 JDK

bash - sh 和 Bash 之间的区别

linux - Bash:与查找一起使用时,重命名命令不适用于子目录

shell - 命令来验证管道中的输入然后将其传递?

javascript - 未捕获的 ReferenceError : show_pic is not defined at file:///android_asset/www/index. html:27