gpt4 book ai didi

c - 打开/dev/mem - 不允许操作

转载 作者:IT王子 更新时间:2023-10-29 00:54:41 29 4
gpt4 key购买 nike

我正在使用 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 上搜索过这个

  1. access-permissions-of-dev-mem

  2. accessing-mmaped-dev-mem

这些问题似乎讨论了无法访问超过 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

如果需要其他信息,请告诉我。

最佳答案

如果您不是 root,则无法读取 /dev/mem

普通应用程序没有理由访问/dev/mem,即物理 RAM,因为应用程序在虚拟内存中运行 !

如果您更改 /dev/mem 的权限以启用它(您不应该),您将在您的系统中打开一个巨大的安全漏洞。只有受信任的根进程才能访问 /dev/mem。参见 mem(4)

(如果需要,您可以使用 setuid 技术,或者使用 sudo 运行您的程序)

如果您需要访问virtual memoryaddress space其他一些process , 考虑 proc(5)例如/proc/1234/mem 为 pid 1234 的进程。

关于c - 打开/dev/mem - 不允许操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22369736/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com