2

Cygwin での POSIX セマフォに問題があります。次のことを試しました。

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

上記の semtool は、(semget、semctl などの sys. 呼び出しを介して) 新しいセマフォを作成しようとします。ただし、機能しません: 不正なシステム コールです。

また、semget() を使用する最小限のテスト C プログラムは、同じメッセージを吐き出して失敗します: Bad system call.

私はグーグルをしました: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
$

今はうまくいくようです!

4

1 に答える 1

1

cygserver は稼働していますか?

更新:これはWindows 7でうまくいきました:

  1. (管理者として) cygserver-config を実行し、プロンプトが表示されたら「はい」と答えました。
  2. 「CYGWIN cygserver」サービス開始。
  3. Cygwinシェルで「export CYGWIN=server」を実行。

この時点で、semtool を実行してセマフォを作成/ロック/ロック解除し、semstat を実行してその状態を表示できます。

于 2011-05-24T12:16:19.700 に答える