sem_open устанавливает ENAMETOOLONG для имен длиной менее 64 символов в Mac OS X 10.6.6 HFS + - PullRequest
3 голосов
/ 13 марта 2011

в нашем проекте колледжа сделан следующий звонок:

sem_t * handle = sem_open ("/ 6770 :: BitCompressedVector :: allocate", 512, 420, 1);

Как видно из заголовка, для errno установлено значение ENAMETOOLONG, указывающее, что первый параметр (имя) либо превышает PATH_MAX (1024 символа), либо компонент имени пути превышает NAME_MAX (255 символов).

Двоичный файл выполняется по пути длиной 62 символа. Сокращение длины пути до 14 символов не помогло. При использовании "/ 6770 :: B :: a" все нормально. Но это не решение для нас.

Я использую Mac OS X 10.6.6 с томом HFS + и набором инструментов разработчика Xcode 3.2.6. В моих товарищах по команде MacBooks (Mac OS X 10.6.x, HFS +) и наших системах Ubuntu 10.10 ext4 код работает без ошибок.

В чем причина различного поведения в моей системе? Есть ли обходной путь, который не требует изменения кода?

1 Ответ

2 голосов
/ 13 марта 2011

Справочная страница Os X для sem_open гласит:

[ENAMETOOLONG] имя превысило символы SEM_NAME_LEN.

У меня нет этой ОС, но Googleкажется, указывает, что SEM_NAME_LEN будет 31.

...