关于C#:open / dev / mem-不允许操作

open /dev/mem - Operation not permitted

我正在研究ubuntu。

我正在尝试打开/dev/mem,并且正在获取permission denied

1
2
3
4
5
6
7
8
9
10
11
12
13
int32_t open_memdev()
{
        int32_t fd;

        fd = open("/dev/mem", O_RDONLY);
        if (fd < 0) {
                printf("Failed to open /dev/mem : %s\
"
, strerror(errno));
                return-EINVAL;
        }

        return fd;
}

此代码始终打印"Failed to open /dev/mem : Operation not permitted"

我在SO

上搜索了此内容

  • dev-mem的访问权限

  • 访问-mmaped-dev-mem

  • 这些q似乎在讨论无法访问1 MB以上的问题,但是我的问题是我什至无法打开一次。

    其他详细信息(如果有帮助的话):

    1)我检查了配置是否启用了CONFIG_STRICT_DEVMEM。

    1
    2
    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运行程序)

    如果您需要在其他进程的地址空间中访问虚拟内存,请考虑使用proc(5)例如。 /proc/1234/mem用于pid 1234的处理。