gpt4 book ai didi

c++ - 我如何更改 shm_open 路径?

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

我目前正在 ubunto 上开发一个应用程序并调用 shm_open,目前默认路径在/var/run/shm 中。但是我需要将其更改为/tmp。简单地尝试以下是行不通的:

fd = shm_open( "/tmp/test", O_RDWR | O_CREAT, 0777);

谁能给个建议?

最佳答案

来自 shm_open(3) 的手册页:

name specifies the shared memory object to be created or opened. For portable use, a shared memory object should be identified by a name of the form /somename; that is, a null-terminated string of up to NAME_MAX (i.e., 255) characters consisting of an initial slash, followed by one or more characters, none of which are slashes.

shm_open(3)name参数是对象名,不是文件路径! GLIBC 恰好将所有共享内存对象放在 /dev/shm/var/run/shm 中,方法是在对象名称前面加上路径并调用 open () 在结果名称上。如果您指定 /tmp/test 作为共享对象名称,那么 Linux 将尝试打开或创建 /var/run/shm/tmp/test。使用 O_CREAT 打开会创建新文件,但不会创建新目录

如果您在调用 shm_open("/tmp/test", ...) /var/run/shm/tmp,您的测试就会成功。记住在完成共享内存对象后将其删除。还要注意,使用内部带有两个斜杠的对象名称可能无法移植到其他 Unix 系统。

关于c++ - 我如何更改 shm_open 路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11102599/

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