/// <summary> /// シグナルハンドラーの設定 /// </summary> /// <param name="handler">シグナルハンドラー</param> /// <param name="value">設定シグナル値</param> /// <returns></returns> public bool SetSignal(EventHandler handler) { if (m_platform == ExitSignal_Platform.Linux || m_platform == ExitSignal_Platform.Mac) { // Linux用シグナルハンドラーの設定 if ((m_linuxSignals & (Int32)SignalEnums.LINUX_SIGHUP) == (Int32)SignalEnums.LINUX_SIGHUP) { m_platformExitSignal.SetSignal(handler, (Int32)Signal.SIGHUP); } if ((m_linuxSignals & (Int32)SignalEnums.LINUX_SIGINT) == (Int32)SignalEnums.LINUX_SIGINT) { m_platformExitSignal.SetSignal(handler, (Int32)Signal.SIGINT); } if ((m_linuxSignals & (Int32)SignalEnums.LINUX_SIGKILL) == (Int32)SignalEnums.LINUX_SIGKILL) { m_platformExitSignal.SetSignal(handler, (Int32)Signal.SIGKILL); } if ((m_linuxSignals & (Int32)SignalEnums.LINUX_SIGPIPE) == (Int32)SignalEnums.LINUX_SIGPIPE) { m_platformExitSignal.SetSignal(handler, (Int32)Signal.SIGPIPE); } if ((m_linuxSignals & (Int32)SignalEnums.LINUX_SIGQUIT) == (Int32)SignalEnums.LINUX_SIGQUIT) { m_platformExitSignal.SetSignal(handler, (Int32)Signal.SIGQUIT); } if ((m_linuxSignals & (Int32)SignalEnums.LINUX_SIGTERM) == (Int32)SignalEnums.LINUX_SIGTERM) { m_platformExitSignal.SetSignal(handler, (Int32)Signal.SIGTERM); } return(true); } else if (m_platform == ExitSignal_Platform.Windows) { // Windows用シグナルハンドラーの設定 return(m_platformExitSignal.SetSignal(handler, -1)); } else { // 知らないプラットフォーム Debug.Assert(false); return(false); } }