Documentation
#![cfg(unix)]

pub async fn signal() {
  use tokio::signal::unix::{SignalKind, signal};

  let mut term = signal(SignalKind::terminate()).unwrap();
  let mut hup = signal(SignalKind::hangup()).unwrap();

  let msg = tokio::select! {
      _ = tokio::signal::ctrl_c() => {
          "ctrl+c"
      },
      Some(_) = term.recv() => {
          "terminate"
      },
      Some(_) = hup.recv() => {
          "hangup"
      },
  };
  log::info!("\n收到 {} 信号,开始关闭服务", msg);
}