sem_open 在 Mac OS X 10.6.6 HFS+ 上为少于 64 个字符的名称设置 ENAMETOOLONG;

发布于 2024-10-21 20:08:40 字数 482 浏览 1 评论 0原文

在我们的大学项目中,进行以下调用:

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

霞映澄塘 2024-10-28 20:08:40

sem_open 的 Os X 手册页指出:

[ENAMETOOLONG]名称超出了 SEM_NAME_LEN 个字符。

我没有那个操作系统,但 google 似乎表明 SEM_NAME_LEN 将为 31。

The Os X man page for sem_open states:

[ENAMETOOLONG] name exceeded SEM_NAME_LEN characters.

I don't have that OS, but google seems to indicate that SEM_NAME_LEN would be 31.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文