首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么我不能mmap /proc/self/map?

mmap /proc/self/map 是一个非法操作,因为 /proc/self/map 并不存在。/proc 是一个特殊的文件系统,它提供了对内核数据结构的访问。/proc/self 是一个指向当前进程的符号链接,而 /proc/self/map 并不是一个有效的文件或目录。

在 Linux 系统中,/proc 文件系统提供了一种机制,允许用户通过读取和写入特定文件来与内核进行交互。但是,并不是所有的文件都可以被 mmap 映射到内存中。mmap 是一种将文件或设备映射到内存的机制,它需要一个有效的文件描述符或文件路径作为参数,而 /proc/self/map 并不满足这个条件。

此外,/proc/self/map 也不是一个标准的 Linux 文件或目录,因此无法对其进行 mmap 操作。/proc/self/map 并不代表任何有效的资源或数据,因此尝试 mmap 它是没有意义的。

总结起来,你不能 mmap /proc/self/map 是因为 /proc/self/map 并不存在,它不是一个有效的文件或目录。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

为什么在容器中不能 kill 1 号进程?

linux信号 而为什么不能在容器中kill 1号进程呢?进程在收到信号后,就会去做相应的处理。 第一个选择是忽略这个信号,但有两个信号例外:SIGKILL 和 SIGSTOP,进程不能忽略。...为什么在容器中不能kill 1号进程? 对于不同的程序,结果是不同的。把c程序作为1号进程就无法在容器中杀死,而go程序作为1号进程却可以。...如果信号被忽略了,那么 init 进程就不能收到指令了。 想要知道 init 进程为什么收到或者收不到信号,就要去看 sig_task_ignored()的实现。...rm sig-proc # docker run --name sig-proc -d registry/sig-proc:v1 /c-init-sig # docker exec -it sig-proc...0000000000004000 [root@043f4f717cb5 /]# kill 1 # docker ps CONTAINER ID IMAGE COMMAND CREATED 重点总结 “为什么在容器中不能

15110

JDK核心JAVA源码解析(5) - JAVA File MMAP原理解析

原来在学JAVA时,那些JAVA入门书籍会告诉你一些规律还有法则,但是用的时候我们一般很难想起来,因为我们用的少并且不知道为什么。知其所以然方能印象深刻并学以致用。...JNI调用3:调用mmap构建内存映射 FileDispatcherImpl.c: #define mmap64 mmap JNIEXPORT jlong JNICALL Java_sun_nio_ch_FileChannelImpl_map0...MAP_LOCKED:将映射区域锁定住,这表示该区域不会被置换(swap)。 在调用mmap()时必须要指定MAP_SHARED 或MAP_PRIVATE。...这是为什么呢?...JAVA File MMAP总结 MMAP对于文件读写效率最快,内存映射文件提供了Java有可能达到的最快文件IO操作 MMAP最大可以Map小于但是不包含2G大小(2GB - 1B)的内存 读写内存映射文件是操作系统来负责的

1.2K20

想掌握Android面试官必问的 Binder 机制?那别想绕开 Binder 驱动源码分析!

要达到彻底掌握,不能死记别人对 binder 的概括描述,而是要自己深入源码去看它到底是个什么东西,有了自己的理解,才能胸有成竹的应对相关面试问题。...() mVMStart = mmap(0, binder_VM_SIZE, PROT_READ, MAP_PRIVATE |...MAP_NORESERVE, mDriverFD, 0); if (mVMStart == MAP_FAILED) { close(mDriverFD...最后在这里分享一下这段时间从朋友,大佬那里收集到的一些2019-2020BAT 面试真题解析,里面内容很多也很系统,包含了很多内容:Android 基础、Java 基础、Android 源码相关分析、...这里也分享给广大面试同胞们,希望每位程序猿们都能面试成功~ 以上内容均放在了开源项目:的github 中已收录,里面包含不同方向的自学Android路线、面试题集合/面经、及系列技术文章等,资源持续更新中

2K00

Linux fork那些隐藏的开销

是不是想了好久也没想明白为什么一个函数可以返回两次?...嗯,不好,为什么呢?因为要刷cache呀....那要是用带有进程pid健值的cache呢?...这是基于/proc/$pid/maps文件计算出来的: // 计算方法:用stack头减去heap尾即可,然后根据OOM信息手动修改 #define CNT 8638055936 char *...本节指出的问题之所以没有成为普遍的问题,确实有一部分原因是并非所有的父进程都是稀疏地址空间且恰好在子进程exec前发生了写时复制,但这并不能掩盖问题本身,通过构造,这不是构造出一个场景了吗?...为了不让内核进行这种合并,我们还是要保留mmap的FIXED参数,就不贴整个源码了,只是把相对于上一节的改动贴出来: #define CNT 1000000 ...

4.8K50

Linux 内存中的 Cache 真的能被回收么?

这样的人的第一反应是:天啊,内存用了好多,70个多 G,可是几乎没有运行什么大程序啊?为什么会这样? Linux 好占内存! 2、自以为很了解。...这样我们可以看到,使用 mmap 申请标志状态为 MAP_SHARED 的内存,内核也是使用的 cache 进行存储的。在进程对相关内存没有释放之前,这段 cache 也是不能被正常释放的。...实际上,mmapMAP_SHARED 方式申请的内存,在内核中也是由 tmpfs 实现的。...由此我们也可以推测,由于共享库的只读部分在内存中都是以 mmapMAP_SHARED 方式进行管理,实际上它们也都是要占用 cache 且无法被释放的。...4、使用 mmap 方法申请的 MAP_SHARED 标志的内存会占用 cache 空间,除非进程将这段内存 munmap,否则相关的 cache 空间都不会被自动释放。

5.3K50

DPDK巨页地址管理Linux内核内存管理内存映射pagemaprdma内存注册

连续的内存段抽象为rte_memseg,如果把rte_memseg中的一部分命名并以供使用,那么称为rte_memzone在每个进程目录下有一个 pagemap 文件(/proc/self/pagemap..., proc_uid_map_operations), REG("gid_map", S_IRUGO|S_IWUSR, proc_gid_map_operations), REG("projid_map...如果单个 mmap() 调用已保留多个页面,则访问单个页面不会导致分配其他页面。 强烈反对将 MAP_NORESERVE 标志与 MAP_HUGETLB 结合使用。...当没有足够的大页面可用时,使用 MAP_NORESERVE 的 mmap() 会产生令人讨厌的行为。 mmap() 调用总是成功,但稍后,在第一次访问无法分配的内存页时,会出现 SIGBUS 信号。...注意:多次mmap(),该文件仍 只有1g大小virtaddr = mmap(NULL, hugepage_sz, PROT_READ | PROT_WRITE,MAP_SHARED | MAP_POPULATE

47010

【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 获取 远程 目标进程 中的 systemliblibc.so 动态库中的 mmap 函数地址 )

文章目录 一、获取 远程 目标进程 中的 /system/lib/libc.so 动态库中的 mmap 函数地址 二、从 /proc/pid/maps 文件中获取 指定 进程 中的 /system/lib...的 /system/lib/libc.so 动态库 地址 偏移量 , 计算出 远程进程 /system/lib/libc.so 动态库 的 mmap 函数地址 ; 二、从 /proc/pid/maps.../self/maps" 字符串作为地址 ; 获取远程进程 maps 文件地址 , 需要 "/proc/%d/maps", pid 将 pid 拼接到 “/proc/%d/maps” 字符串中 ; char...filename, sizeof(filename), "/proc/self/maps"); } else { /* 远程进程 */ snprintf(filename, sizeof(filename...process 本进程 */ snprintf(filename, sizeof(filename), "/proc/self/maps"); } else { /* 远程进程 */

83020
领券