Использование семафоров System V в Cygwin: неправильный системный вызов
У меня проблема с семафорами POSIX под Cygwin, я пробовал следующее:
$ semtool c 1
Attempting to create new semaphore set with 1 members
Bad system call
$
вышеприведенный semtool пытается создать (через semget, semctl и т. д. системные вызовы) новый семафор. Однако это не работает: плохой системный вызов.
Также минималистичная тестовая C-программа, использующая semget(), не может выдать то же сообщение: Bad системный вызов.
Я выполнил поиск в Google: установил cygserver, определил переменную окружения CYGWIN для "server", но ничего не помогло. Моя версия Cygwin довольно новая:
$ cygcheck -c | grep cygwin
base-cygwin 3.0-1 OK
cygwin 1.7.9-1 OK
cygwin-doc 1.7-1 OK
cygwin-x-doc 1.1.1-1 OK
$
Какие-нибудь мысли / намеки на то, что еще может отсутствовать?
попробовал сейчас с дополнительным экспортом:
$ export CYGWIN=server
служба работает
$ net start | grep -i cyg
CYGWIN cygserver
$
ошибки больше нет:
$ semtool c 1
Attempting to create new semaphore set with 1 members
$
кажется, работает сейчас!
1 ответ
Cygserver работает?
Обновление: это работало для меня под Windows 7:
- Запустил cygserver-config (как администратор), ответил "да" при появлении запроса.
- Запущен сервис "CYGWIN cygserver".
- Выполнен "экспорт CYGWIN= сервер" в оболочке Cygwin.
На этом этапе я мог запустить semtool для создания / блокировки / разблокировки семафора, а также semstat для отображения его состояния.