游戏服务器信号
Learn about the signals sent to game servers like SIGTERM and SIGKILL.
信号是用来向主机操作系统报告发生异常事件的一种方式。主机操作系统通过信号类型判断如何处理该事件。本节提供了使用常见信号的指导并介绍了 Multiplay Hosting 如何对信号进行响应。
警告
警告:以下信号仅适用于运行在基于 Linux 的操作系统上的游戏。
SIGTERM
SIGTERM 是可触发进程终止的通用信号。除了可以被进程屏蔽、处理或忽略之外,它与 SIGKILL 类似。您可以将 SIGTERM 想象成一种礼貌请求进程结束(终止)的方式。
要停止服务器时,Multiplay Hosting 向版本可执行文件进程发送一个 SIGTERM 信号。版本可执行文件必须通过退出来响应 SIGTERM 信号。如果版本可执行文件在 20 秒内未对 SIGTERM 信号进行响应,则会收到 SIGKILL 命令。
注意
SIGTERM 没有相应的 Windows 信号。
SIGKILL
SIGKILL 是可使进程立即结束(终止)的通用信号。它与 SIGTERM 类似,但不可被进程屏蔽、忽略或处理。SIGKILL 始终可以终止进程。
如果版本可执行文件进程无法在 20 秒内对 SIGTERM 信号做出响应,Multiplay Hosting 会使用 SIGKILL 信号来将其终止。
SIGSEGV
发送到进程的 SIGSEGV 信号会尝试访问无法访问的内存位置,导致出现段错误。一些比较常见的触发 SIGSEGV 信号的因素包括取消引用 null 指针、缓冲区溢出和无效权限。
Multiplay Hosting 检测到版本可执行文件进程行为异常时,会向该进程发送一个 SIGSEGV 信号。通常,这意味着,该进程使用了过多内存(或 CPU)或尝试访问无法访问的内存。
注意
Multiplay Hosting 使用 SIGSEGV 信号而不使用其他中断信号(例如 SIGSTOP)的原因在于其他信号不会触发核心转储,或者会使游戏引擎出现问题。