Использование семафоров System V в Cygwin: неправильный системный вызов - PullRequest
2 голосов
/ 24 мая 2011

У меня проблема с семафорами 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 Ответ

1 голос
/ 24 мая 2011

Cygserver работает?

Обновление: это работало для меня под Windows 7:

  1. Запустил cygserver-config (как администратор), ответил «да» при появлении запроса.
  2. Запущена услуга «CYGWIN cygserver».
  3. Выполнено «export CYGWIN = server» в оболочке cygwin.

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

...