sem_open 在 Mac OS X 10.6.6 HFS+ 上为少于 64 个字符的名称设置 ENAMETOOLONG;
在我们的大学项目中,进行以下调用:
sem_t *handle = sem_open("/6770::BitCompressedVector::allocate", 512, 420, 1);
正如标题所示,errno 设置为 ENAMETOOLONG,表示第一个参数(名称)超过 PATH_MAX(1024 个字符),或者路径名组件超过 NAME_MAX(255 个字符)。
二进制文件在 62 个字符长的路径中执行。将路径长度减少到 14 个字符并没有帮助。当使用“/6770::B::a”时,一切都很好。但这对我们来说不是解决办法。
我使用的是带有 HFS+ 卷的 Mac OS X 10.6.6 和 Xcode 开发人员工具集 3.2.6。在我的队友 MacBook(Mac OS X 10.6.x、HFS+)和我们的 Ubuntu 10.10 ext4 系统上,代码可以正常运行,没有错误。
我的系统出现不同行为的原因是什么?有没有不需要更改代码的解决方法?
in our college project, the following call is made:
sem_t *handle = sem_open("/6770::BitCompressedVector::allocate", 512, 420, 1);
As the title says, errno is set to ENAMETOOLONG, indicating that the first parameter (name) either exceeds PATH_MAX (1024 characters), or a pathname component exceeds NAME_MAX (255 characters).
The binary is executed in a 62 characters long path. Reducing the path length to 14 characters didn't help. When using "/6770::B::a", everything is fine. But this is no solution to us.
I'm using Mac OS X 10.6.6 with an HFS+ volume and the Xcode developer toolset 3.2.6. On my team mates MacBooks (Mac OS X 10.6.x, HFS+) and our Ubuntu 10.10 ext4 systems, the code works without errors.
What's the reason for the different behaviour on my system? Is there a workaround that does not need a change to the code?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
sem_open
的 Os X 手册页指出:我没有那个操作系统,但 google 似乎表明
SEM_NAME_LEN
将为 31。The Os X man page for
sem_open
states:I don't have that OS, but google seems to indicate that
SEM_NAME_LEN
would be 31.