我可以添加到/proc/self 吗?

我可以添加到/proc/self 吗?

我想在程序中创建许多命名的内存区域,并将mmap它们放在某个地方,以便其他进程可以读取它们。我不能保证我的程序一次只会运行一个实例。理想情况下,我想将块放在下面/proc/self/<blockname>等。这可能吗?或者还有其他地方可以放置映射文件吗? (我的程序通常不会以 root 身份运行。)

我不想使用/proc/self/fdor /proc/self/map_files,因为这不允许命名它们(据我所知)。

答案1

不,您无法以有意义的方式添加结构,/proc因为它是生成的(不是“真正的”文件系统)。/sys在某些机器上也是如此。改变 的结构/proc并不简单(参见示例在/proc下创建一个文件夹并在该文件夹下创建一个条目)。

进一步阅读:

@mark-plotnick 建议使用 POSIX 共享内存,它确实支持名字

进一步阅读:

答案2

不。内核决定 中的内容,而不是进程。 (是您要问的问题,而不是:其他进程在 中看不到您的进程。)/proc/PID/proc/PID/proc/self/proc/self

当进程需要传送有关其自身的数据时,放置此信息的常规位置/var/run对于由管理员启动的进程(即系统服务)来说是在下面,/tmp对于由用户启动的进程来说是在用户的主目录下。对于与进程相关的信息,主目录通常不是一个好主意,因为它可以在计算机之间共享。现代 Linux 系统也有.选择一个并定义约定,例如目录或其中 1234 是 PID。当进程退出时删除该目录。/run/user/UID/tmp/myapplication-1234/run/user/myapplication/1234

相关内容