当前位置 : 主页 > 手机开发 > android >

用代码读取android dmesg

来源:互联网 收集:自由互联 发布时间:2021-06-11
如何在程序中读取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
如何在程序中读取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, 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访问权限,那么您将非常幸运.

网友评论