в нашем проекте колледжа сделан следующий звонок:
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 код работает без ошибок.
В чем причина различного поведения в моей системе? Есть ли обходной путь, который не требует изменения кода?