1

functionUPDATEMySQL 数据库中发生使用 Unix 信号之类的事件时,我可以调用或通知 C++ 应用程序SIGUSR1吗?或者如何将 Unix 信号与 MySQL 触发器结合使用?

4

1 回答 1

1

不,没有办法做到这一点。MySQL 仅通过 MySQL 套接字连接进行通信。

无论如何,信号对于 IPC 来说非常糟糕:

  • 您不能将任何复杂信息与信号一起传递;您通常仅限于信号编号和发送它们的进程的 PID。
  • 它们与线程一起的行为定义不明确。
  • 当你收到很多信号时会发生什么。(只有当它们能够携带复杂的信息时才会真正有用。)
  • 它们可以中断系统调用,因此您最终可能不得不重试很多通常不需要的调用,并且最终可能会触发一些罕见的错误。
  • 信号处理程序可以随时被触发,因此在信号处理程序中做很多事情是不安全的(最值得注意的是,任何可能调用的事情malloc())。

基本上其他任何东西(套接字、管道、消息队列、网络链接......)都比信号好。

于 2013-08-17T06:23:42.453 回答