1

Unix シグナルを使用して MySQL データベースで発生しfunctionたときに、C++ アプリケーションを呼び出したり、通知したりできますか? または Unix シグナルと MySQL トリガーの組み合わせを使用するにはどうすればよいですかUPDATESIGUSR1

4

1 に答える 1

1

いいえ、これを行う方法はありません。MySQL は、MySQL ソケット接続を介してのみ通信します。

とにかく、信号はIPCにとってかなりひどいものです:

  • 複雑な情報をシグナルと共に渡すことはできません。通常、シグナル番号とそれらを送信したプロセスの PID に限定されます。
  • スレッドと関連したそれらの動作は、十分に定義されていません。
  • 多くの信号を受信したときに何が起こるかについても同様です。(これは、複雑な情報を運ぶことができる場合にのみ本当に役立ちます。)
  • それらはシステム コールを中断する可能性があるため、通常は必要のない多くの呼び出しを再試行する必要が生じる可能性があり、いくつかのまれなバグがトリガーされる可能性があります。
  • シグナル ハンドラーはいつでもトリガーされる可能性があるため、シグナル ハンドラー内で多くのことを行うのは安全ではありません (特に、 を呼び出す可能性のあるものすべてmalloc())。

基本的に、他のもの (ソケット、パイプ、メッセージ キュー、ネットリンクなど) はシグナルよりも優れています。

于 2013-08-17T06:23:42.453 に答える