Использование семафоров 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:

  1. Запустил cygserver-config (как администратор), ответил "да" при появлении запроса.
  2. Запущен сервис "CYGWIN cygserver".
  3. Выполнен "экспорт CYGWIN= сервер" в оболочке Cygwin.

На этом этапе я мог запустить semtool для создания / блокировки / разблокировки семафора, а также semstat для отображения его состояния.

Другие вопросы по тегам