如何正确确定shm_open函数对应的NAME_MAX值?
关于shm_open中name参数长度限制的可移植性问题
- shm_open的手册指出,为保证可移植性,name参数的长度不应超过NAME_MAX字符。
- GNU C库参考手册的“文件系统容量限制”章节提到:如果系统允许不同文件系统或文件采用不同限制,limits.h中不会定义NAME_MAX,此时需要用
pathconf来获取实际限制。 - 但
pathconf需要传入实际路径或文件描述符,而shm_open操作的共享内存对象由glibc内部处理——在Linux上通常对应/dev/shm,但这并非绝对。 - 我不愿直接使用手册里提到的255这个值,也不想用根路径
/来调用pathconf,因为/dev/shm一般是tmpfs,和根文件系统的限制可能不同。 - 我尝试过搜索头文件、
getconf -a的输出及相关手册,都没找到解决方法;还查看了glibc中shm_open的实现代码,发现是硬编码逻辑,没什么参考价值。
这是否意味着我低估了/dev/shm的可移植性?
内容的提问来源于stack exchange,提问作者A. Bear
相关产品推荐
相关产品推荐

