linux shm_open,c – 如何更改shm_open路径?

我目前正在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,linux,boost,shared-memory

来源: https://codeday.me/bug/20190723/1512607.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值