[BACK]Return to mysig.c CVS log [TXT][DIR] Up to [local] / OpenXM / src / kan96xx / plugin

File: [local] / OpenXM / src / kan96xx / plugin / Attic / mysig.c (download)

Revision 1.2, Wed Mar 30 09:20:40 2016 UTC (8 years, 3 months ago) by takayama
Branch: MAIN
Changes since 1.1: +20 -6 lines

The ox-launcher ox is not BSD signal free.

/* $OpenXM: OpenXM/src/kan96xx/plugin/mysig.c,v 1.2 2016/03/30 09:20:40 takayama Exp $ */
#include <stdio.h>
#include <signal.h>
#include <unistd.h>
#include <setjmp.h>
#include <string.h>
#include "mysig.h"

/*
  sigset SIGINT, SIGCHLD, SIGUSR1
 */
int unblock_signal(int sigset[]) {
  struct sigaction act;
  sigset_t set;
  sigset_t oldset;
  int i;
  sigemptyset(&set);
  for (i=0; sigset[i] > 0; i++) sigaddset(&set,sigset[i]);
  sigprocmask(SIG_UNBLOCK,&set,&oldset);
  return(0);
}
/* Add (or) blocked signals, see sigprocmask */
int block_signal(int sigset[]) {
  struct sigaction act;
  sigset_t set;
  sigset_t oldset;
  int i;
  sigemptyset(&set);
  for (i=0; sigset[i] > 0; i++) sigaddset(&set,sigset[i]);
  sigprocmask(SIG_BLOCK,&set,&oldset);
  return(0);
}

int set_signal(int sig,void (*handler)(int m)) {
  struct sigaction act;
  struct sigaction oldact;
  act.sa_handler=handler;
  act.sa_flags=0;
  act.sa_flags |= SA_RESTART;
  sigemptyset(&act.sa_mask);
  return(sigaction(sig,&act,&oldact));
}