0

サーバー内のスレッド間通信にメッセージ キューを使用しています。木曜日の夜、サーバーは期待どおりに機能していました。月曜日にプロジェクトを再開したところ、使用中の 6 つのキューのうち 2 つを作成できませんでした。これは、それらが既に開いているためです (O _EXCL が設定されています)。これはあってはならないことですが、それでも、エラー チェックを伴う mq unlink 呼び出しを追加し、 mq openから_O _EXCL フラグを削除しました。_

_コンパイルして実行すると、mq unlink と mq openの両方で errno が EEXIST に設定されました_。mq _unlink はどのような状況でも errno を EEXIST に設定できず、mq _open は O _EXCL フラグが設定されている場合にのみ EEXIST を設定できます。

なぜこれが起こっているのですか?

4

1 に答える 1

3

これは Solaris のバグだと思います。ロック ファイル (通常は/var/tmp/.MQL/...) を確認し、メッセージ キューが使用されていないことがわかっている場合は削除します。unlinkこれにより、が成功するはずです。

于 2009-07-08T00:04:23.567 に答える