我正在研究ubuntu。
我正在尝试打开/dev/mem
,我正在permission denied
int32_t open_memdev()
{
int32_t fd;
fd = open("/dev/mem", O_RDONLY);
if (fd < 0) {
printf("Failed to open /dev/mem : %s\n", strerror(errno));
return-EINVAL;
}
return fd;
}
此代码始终打印"Failed to open /dev/mem : Operation not permitted"
我在SO
上搜索了这个这些q似乎讨论了无法访问超过1 MB的问题,但我的问题是我甚至无法打开一次。
如果有帮助,请添加详细信息:
1)我检查了我的配置是否启用了CONFIG_STRICT_DEVMEM。
2) ls -l /dev/mem
crw-r----- 1 root kmem 1, 1 2014-03-13 13:57 /dev/mem
如果需要其他信息,请与我们联系。
答案 0 :(得分:10)
如果您不是 root ,则无法阅读/dev/mem
。
普通应用程序没有理由访问/dev/mem
,即物理 RAM,因为应用程序在虚拟内存中运行!< / SUP>
如果您更改/dev/mem
的权限以启用(您不应该),则会在系统中打开一个巨大的安全漏洞。只有受信任的根进程才能访问/dev/mem
。见mem(4)
(如果需要,您可以使用setuid技术,或使用sudo
运行您的程序
如果您需要访问其他virtual memory的address space中的process,请考虑proc(5),例如: {1}用于pid 1234的处理。