28 #if defined (HAVE_CONFIG_H)
32 #include <sys/types.h>
37 #if defined (__WIN32__) && ! defined (__CYGWIN__)
48 #if defined (HAVE_KILL)
49 return kill (pid, signum);
58 return strsignal (signum);
64 #if defined (HAVE_KILL)
78 if (!
strcmp (signame,
"SIGINT"))
85 else if (!
strcmp (signame,
"SIGBREAK"))
87 #if defined (SIGBREAK)
92 else if (!
strcmp (signame,
"SIGABRT"))
99 else if (!
strcmp (signame,
"SIGALRM"))
101 #if defined (SIGALRM)
106 else if (!
strcmp (signame,
"SIGBUS"))
113 else if (!
strcmp (signame,
"SIGCHLD"))
115 #if defined (SIGCHLD)
120 else if (!
strcmp (signame,
"SIGCLD"))
127 else if (!
strcmp (signame,
"SIGCONT"))
129 #if defined (SIGCONT)
134 else if (!
strcmp (signame,
"SIGEMT"))
141 else if (!
strcmp (signame,
"SIGFPE"))
148 else if (!
strcmp (signame,
"SIGHUP"))
155 else if (!
strcmp (signame,
"SIGILL"))
162 else if (!
strcmp (signame,
"SIGINFO"))
164 #if defined (SIGINFO)
169 else if (!
strcmp (signame,
"SIGINT"))
176 else if (!
strcmp (signame,
"SIGIOT"))
183 else if (!
strcmp (signame,
"SIGLOST"))
185 #if defined (SIGLOST)
190 else if (!
strcmp (signame,
"SIGPIPE"))
192 #if defined (SIGPIPE)
197 else if (!
strcmp (signame,
"SIGPOLL"))
199 #if defined (SIGPOLL)
204 else if (!
strcmp (signame,
"SIGPROF"))
206 #if defined (SIGPROF)
211 else if (!
strcmp (signame,
"SIGPWR"))
218 else if (!
strcmp (signame,
"SIGQUIT"))
220 #if defined (SIGQUIT)
225 else if (!
strcmp (signame,
"SIGSEGV"))
227 #if defined (SIGSEGV)
232 else if (!
strcmp (signame,
"SIGSTOP"))
234 #if defined (SIGSTOP)
239 else if (!
strcmp (signame,
"SIGSYS"))
246 else if (!
strcmp (signame,
"SIGTERM"))
248 #if defined (SIGTERM)
253 else if (!
strcmp (signame,
"SIGTRAP"))
255 #if defined (SIGTRAP)
260 else if (!
strcmp (signame,
"SIGTSTP"))
262 #if defined (SIGTSTP)
267 else if (!
strcmp (signame,
"SIGTTIN"))
269 #if defined (SIGTTIN)
274 else if (!
strcmp (signame,
"SIGTTOU"))
276 #if defined (SIGTTOU)
281 else if (!
strcmp (signame,
"SIGURG"))
288 else if (!
strcmp (signame,
"SIGUSR1"))
290 #if defined (SIGUSR1)
295 else if (!
strcmp (signame,
"SIGUSR2"))
297 #if defined (SIGUSR2)
302 else if (!
strcmp (signame,
"SIGVTALRM"))
304 #if defined (SIGVTALRM)
309 else if (!
strcmp (signame,
"SIGIO"))
316 else if (!
strcmp (signame,
"SIGWINCH"))
318 #if defined (SIGWINCH)
323 else if (!
strcmp (signame,
"SIGXCPU"))
325 #if defined (SIGXCPU)
330 else if (!
strcmp (signame,
"SIGXFSZ"))
332 #if defined (SIGXFSZ)
343 bool restart_syscalls)
345 struct sigaction act, oact;
347 act.sa_handler = handler;
350 #if defined (SIGALRM)
353 # if defined (SA_INTERRUPT)
354 act.sa_flags |= SA_INTERRUPT;
358 #if defined (SA_RESTART)
359 # if defined (SIGALRM)
363 if (restart_syscalls)
364 act.sa_flags |= SA_RESTART;
367 sigemptyset (&act.sa_mask);
368 sigemptyset (&oact.sa_mask);
370 sigaction (sig, &act, &oact);
372 return oact.sa_handler;
378 bool restart_syscalls)
402 #if defined (SIGCHLD)
408 sigemptyset (&(context->
nvar));
409 sigaddset (&(context->
nvar), SIGCHLD);
410 sigemptyset (&(context->
ovar));
411 sigprocmask (SIG_BLOCK, &(context->
nvar), &(context->
ovar));
430 sigprocmask (SIG_SETMASK, &(context->
ovar), 0);
439 #if ! defined (__WIN32__) || defined (__CYGWIN__)
447 sigset_t signal_mask;
449 sigemptyset (&signal_mask);
451 sigaddset (&signal_mask, sig);
453 pthread_sigmask (how, &signal_mask, 0);
static void block_or_unblock_signal(int how, int sig)
int kill(pid_t pid, int sig)
int octave_kill_wrapper(pid_t pid, int signum)
void octave_restore_signal_mask(void)
octave_sig_handler * octave_set_signal_handler_internal(int sig, octave_sig_handler *handler, bool restart_syscalls)
void * octave_block_child(void)
void octave_sig_handler(int)
void octave_unblock_child(void *context_arg)
static llvm::LLVMContext & context
bool strcmp(const T &str_a, const T &str_b)
True if strings are the same.
void octave_block_interrupt_signal(void)
void octave_save_signal_mask(void)
int octave_num_signals(void)
bool octave_have_kill(void)
int octave_raise_wrapper(int signum)
static sigset_t octave_signal_mask
void octave_unblock_interrupt_signal(void)
bool octave_get_sig_number(const char *signame, int *signum)
octave_sig_handler * octave_set_signal_handler_by_name(const char *signame, octave_sig_handler *handler, bool restart_syscalls)
char * octave_strsignal_wrapper(int signum)