在Cygwin下使用System V信号量:系统调用错误

时间:2011-05-24 11:57:06

标签: cygwin semaphore sysv-ipc

我在Cygwin下遇到了POSIX Semaphores的问题,我尝试了以下内容:

$ semtool c 1
Attempting to create new semaphore set with 1 members
Bad system call
$

上面的semtool尝试创建(通过semget,semctl等sys。调用)一个新的信号量。但它不起作用:系统调用错误。

使用semget()的简约测试C程序也无法吐出相同的消息:系统调用错误。

我已经完成了我的谷歌搜索:安装了cygserver,将环境变量CYGWIN定义为“服务器”,但没有任何帮助。我的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 个答案:

答案 0 :(得分:1)

cygserver正在运行吗?

更新:这在Windows 7下适用于我:

  1. Ran cygserver-config(以管理员身份),出现提示时回答“是”。
  2. 启动“CYGWIN cygserver”服务。
  3. 在cygwin shell中执行“export CYGWIN = server”。
  4. 此时我可以运行semtool来创建/锁定/解锁信号量以及semstat以显示其状态。