コード例 #1
0
ファイル: Signal.cpp プロジェクト: tkai8/asos
int SignalWaitForTermination(){
  sigset_t ss;
  int ret;
  int signo;

  sigemptyset(&ss);
  ret = sigaddset(&ss, SIGHUP);  if(ret != 0){ perror("sigaddset/SIGHUP"); return -1; }
  ret = sigaddset(&ss, SIGINT);  if(ret != 0){ perror("sigaddset/SIGINT"); return -1; }
  ret = sigaddset(&ss, SIGTERM); if(ret != 0){ perror("sigaddset/SIGTERM"); return -1; }
 
  ret = pthread_sigmask(SIG_BLOCK, &ss, NULL); if(ret != 0){ perror("sigprocmask"); return -1; }

  while(1){
    ret = sigwait(&ss, &signo);
    if(signo == SIGHUP || signo == SIGINT || signo == SIGTERM ){
      break;
    }
  }

  SetStopFlag();
}
コード例 #2
0
ファイル: file-util.cpp プロジェクト: 0-wiz-0/WCMCommander
	virtual void OnCancel() override
	{
		SetStopFlag();
	}