Additional Topics > External Development Guide > IDLInternals - UNIX Signals > Establishing a Signal Handler

# Establishing a Signal Handler

To register a signal handler, use the IDL_SignalRegister() function:

int IDL_SignalRegister(int signo, IDL_SignalHandler_t func, int msg_action)

where:

### signo

The numeric value of the signal to register for, as defined in `signal.h`.

### func

The signal handler to be called when the signal specified by `signo` is raised.

### msg_action

One of the IDL_MSG_* action codes for IDL_Message(). If there is an error in registering the signal handler, this action code is passed to IDL_Message() to direct its recovery action. Note that it is incorrect to use any of the message codes that cause IDL_Message() to longjmp() back to the IDL interpreter if your code is running in a context where the IDL interpreter is not active—specifically as part of using Callable IDL.

If func is successfully registered for `signo`, this routine returns TRUE. Otherwise, FALSE is returned and IDL_Message() is called with `msg_action` to control its behavior. Note that there are values of `msg_action` that result in this routine not returning on error. Multiple registration of the same function is allowed, but has no additional effect—the handler will only be called once.