如何在程序中读取dmesg输出? 谢谢.. 您可以编写一些调用 klogctl函数的Android NDK代码.就像是: #include sys/klog.h#define KLOG_READ_ALL 3#define KLOG_LEN (1 17)char buf[KLOG_LEN];if (klogctl(KLOG_READ_ALL, buf, K
谢谢..
您可以编写一些调用 klogctl函数的Android NDK代码.就像是:#include <sys/klog.h> #define KLOG_READ_ALL 3 #define KLOG_LEN (1 << 17) char buf[KLOG_LEN]; if (klogctl(KLOG_READ_ALL, buf, KLOG_LEN) < 0) { printf("Error %s reading dmesg\n", strerror(errno)); } else { /* do something with contents of buf */ }
但是,在Android 4.1 Jelly Bean中,他们实现了一项安全功能,该功能禁止访问dmesg消息.上面的代码将失败,并显示“不允许操作”错误.如果您具有设备的root访问权限,则可以关闭dmesg_restrict:
echo 0 > /proc/sys/kernel/dmesg_restrict
此外,一些最近的设备启用了SELinux,在这种情况下您需要这样做
setenforce 0
如果您没有root访问权限,那么您将非常幸运.