Exemplo n.º 1
0
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();
}
Exemplo n.º 2
0
	virtual void OnCancel() override
	{
		SetStopFlag();
	}