- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
如何在我的程序中读取 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 消息的安全功能。上面的代码将失败并出现“不允许操作”错误。如果您拥有设备的根访问权限,则可以关闭 dmesg_restrict:
echo 0 > /proc/sys/kernel/dmesg_restrict
此外,一些最近的设备启用了 SELinux,在这种情况下您将需要这样做
setenforce 0
如果您没有 root 访问权限,那您就不太走运了。
关于android - 使用代码读取 android dmesg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3643599/
我认为命令dmesg 的输出应该是文件/var/log/dmesg 的子集。但是我在调试的时候,只能在命令dmesg的输出中看到segmentation fault信息。 它们有什么区别? 最佳答
我使用的是 Ubuntu 20.04.3 LTS。我正在尝试监控与我的 Arduino 连接的串行端口。我看到我的 friend 使用以下命令(他在我的笔记本电脑上执行): tail -f {dmes
我使用的是 Ubuntu 20.04.3 LTS。我正在尝试监控与我的 Arduino 连接的串行端口。我看到我的 friend 使用以下命令(他在我的笔记本电脑上执行): tail -f {dmes
我在运行 Ubuntu 的 ARM 系统上使用看门狗,看门狗本身工作得很好,但是自从我启用了看门狗后,我收到了很多“看门狗 watchdog0:看门狗没有停止!” dmesg 中的消息表明 dmesg
dmesg 打印的日志从两个月前就没有更新了,即使我们上周有很多进程被 OOM 杀死。 什么是 dmesg 源以及如何查看系统日志是否正常工作? dmesg 输出: [Mon Jul 6 21:56
我试图简单地从内核模块中读取内核环形缓冲区。也称为/proc/kmsg 和 dmesg 输出。 环顾四周,似乎调用的是 sys_syslog();从我读过的内容来看,dmesg 使用 syslog()
我找到了一种实时跟踪 dmesg 命令输出的解决方案。解决方案是here . watch -n 0.1 "dmesg | tail -n $((LINES-6))" 它有效。但我想了解为什么 $((L
我试图理解 dmesg 时间戳,但发现很难将其转换为 Java 日期或自定义日期格式。 示例 dmesg 日志条目: [14614.647880] airo(eth1): link lost (mis
这个问题已经有答案了: How to understand this dmesg error message? (1 个回答) 已关闭 7 年前。 我编写了这个简单的模块来处理设备并调用其一些电源管理
谁能解释一下内核日志中的时间戳差异? 我们编写了一个在指定时间唤醒 Android 的应用程序,该应用程序利用 AlarmManager API 并设置: AlarmManager.ELAPSED_R
我想更改 dmesg 的掩码优先级,通过它我只想打印那些优先级最高的消息。那么如何以编程方式更改这些优先级呢? 例如,如果 printk 优先级为 KERN_ALERT 或低于此值,则不会在 dmes
如何在我的程序中读取 dmesg 输出? 谢谢.. 最佳答案 您可以编写一些调用 klogctl 的 Android NDK 代码职能。像这样的东西: #include #define KLOG_R
我希望 dmesg 在不传递 -T 参数的情况下打印人类可读的日期时间。有没有办法在不设置别名的情况下做到这一点?也许在配置文件中? dmesg 输出: # dmesg | tail -1 [
我编写了这个简单的模块来处理设备并调用它的一些电源管理方法,例如 .suspend 和 .resume。在初始化时,模块简单查找特定设备并尝试调用其方法。 #include #include #i
这个问题与暂停/恢复问题不相关! 对于同一事件,“dmesg”始终显示相同的时间戳,例如 [31765279.760248] 然而,当使用“dmesg -T”时,对于同一事件,它显示的秒数略有不同,例
我想解码内核日志中的时间格式: [ 107.236115] [ 107.245076] [ 107.521858] [ 107.522098] 有什么方法可以将这些时间戳转换成“min:sec
我编写了如下所述的小内核模块代码, 我正在 ubuntu 14.04 中测试它 #include #include #include #include int init_mod_func(vo
我已经成功地将一个命令的输出通过管道传输到另一个命令的输入中,然后将第二个命令的输出显示到屏幕上。 我想用三个连续的命令来做到这一点。 (实际上,最终我想在运行时将 N 个命令传递给程序。 这是我尝试
为了好玩,我正在开发一个简单的驱动程序,我正在尝试使用 printk 消息对其进行调试。 dmesg 似乎没有显示最后一条 printk 消息,让它显示最后一条消息的唯一方法是再执行一次 printk
我创建了一个基本的 systemd 服务文件来启动应用程序。文件如下所示: [Unit] Description=Starting a Basic Application [Service] Exec
我是一名优秀的程序员,十分优秀!