在Cygwin下使用SystemV信号量:错误的系统调用

在Cygwin下使用SystemV信号量:错误的系统调用,cygwin,semaphore,sysv-ipc,Cygwin,Semaphore,Sysv Ipc,我在Cygwin下的POSIX信号量有问题,我尝试了以下方法: $ semtool c 1 Attempting to create new semaphore set with 1 members Bad system call $ 上面的semtool尝试创建(通过semget、semctl等sys.calls)一个新的信号量。但是它不起作用:糟糕的系统调用 另外,一个使用semget()的极简测试C程序也无法发出相同的消息:错误的系统调用 我已经在谷歌上搜索过了:安装了cygserver

我在Cygwin下的POSIX信号量有问题,我尝试了以下方法:

$ semtool c 1
Attempting to create new semaphore set with 1 members
Bad system call
$
上面的semtool尝试创建(通过semget、semctl等sys.calls)一个新的信号量。但是它不起作用:糟糕的系统调用

另外,一个使用semget()的极简测试C程序也无法发出相同的消息:错误的系统调用

我已经在谷歌上搜索过了:安装了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
$
现在好像工作了

cygserver正在运行吗

更新:这在Windows 7下对我有效:

  • 以管理员身份运行cygserver配置,在出现提示时回答“是”
  • 已启动“CYGWIN cygserver”服务
  • 在CYGWIN shell中执行“导出CYGWIN=server”

  • 此时,我可以运行semtool来创建/锁定/解锁信号量,也可以运行semstat来显示其状态。

    是,它正在运行。我在两台Windows机器上试过,W2K和W7,结果相同。谢谢你的回答,非常感谢!我正在使用cygwin 1.5.25-15 BTW。感谢您的帮助和支持!关于semget、semctl,这些不是与POSIX信号量相关的系统调用,而是system-V。请注意问题的名称,它应该是system-V而不是POSIX。