Mono.Unix.Native.SignalHandler Delegate
A delegate to handle POSIX signals.

Syntax

public delegate void SignalHandler (int signal)

See Also

Stdlib.signal

Parameters

signal
The signal to handle.

Remarks

When this delegate is invoked from signal context (that is, the operating system invokes the delegate), the delegate must be very careful, as processing elsewhere was interrupted at some arbitrary point. This is similar, yet different to multi-threading issues.

In particular, from managed code the only safe thing to do is modify a variable. Calling any function, even POSIX reentrant functions, will not be safe (as Mono's P/Invoke marshaller isn't reentrant).

See also: http://www-106.ibm.com/developerworks/linux/library/l-reent.html.

The POSIX 1003.1-2003 list of reentrant functions is: Syscall._Exit, Syscall._exit, Syscall.abort, Syscall.accept, Syscall.access, Syscall.aio_error, Syscall.aio_return, Syscall.aio_suspend, Syscall.alarm, Syscall.bind, Syscall.cfgetispeed, Syscall.cfgetospeed, Syscall.cfsetispeed, Syscall.cfsetospeed, Syscall.chdir, Syscall.chmod, Syscall.chown, Syscall.clock_gettime, Syscall.close, Syscall.connect, Syscall.creat, Syscall.dup, Syscall.dup2, Syscall.execle, Syscall.execve, Syscall.fchmod, Syscall.fchown, Syscall.fcntl, Syscall.fdatasync, Syscall.fork, Syscall.fpathconf, Syscall.fstat, Syscall.fsync, Syscall.ftruncate, Syscall.getegid, Syscall.geteuid, Syscall.getgid, Syscall.getgroups, Syscall.getpeername, Syscall.getpgrp, Syscall.getpid, Syscall.getppid, Syscall.getsockname, Syscall.getsockopt, Syscall.getuid, Syscall.kill, Syscall.link, Syscall.listen, Syscall.lseek, Syscall.lstat, Syscall.mkdir, Syscall.mkfifo, Syscall.open, Syscall.pathconf, Syscall.pause, Syscall.pipe, Syscall.poll, Syscall.posix_trace_event, Syscall.pselect, Syscall.raise, Syscall.read, Syscall.readlink, Syscall.recv, Syscall.recvfrom, Syscall.recvmsg, Syscall.rename, Syscall.rmdir, Syscall.select, Syscall.sem_post, Syscall.send, Syscall.sendmsg, Syscall.sendto, Syscall.setgid, Syscall.setpgid, Syscall.setsid, Syscall.setsockopt, Syscall.setuid, Syscall.shutdown, Syscall.sigaction, Syscall.sigaddset, Syscall.sigdelset, Syscall.sigemptyset, Syscall.sigfillset, Syscall.sigismember, Syscall.signal, Syscall.sigpause, Syscall.sigpending, Syscall.sigprocmask, Syscall.sigqueue, Syscall.sigset, Syscall.sigsuspend, Syscall.sleep, Syscall.socket, Syscall.socketpair, Syscall.stat, Syscall.symlink, Syscall.sysconf, Syscall.tcdrain, Syscall.tcflow, Syscall.tcflush, Syscall.tcgetattr, Syscall.tcgetpgrp, Syscall.tcsendbreak, Syscall.tcsetattr, Syscall.tcsetpgrp, Syscall.time, Syscall.timer_getoverrun, Syscall.timer_gettime, Syscall.timer_settime, Syscall.times, Syscall.umask, Syscall.uname, Syscall.unlink, Syscall.utime, Syscall.wait, Syscall.waitpid, Syscall.write.

Requirements

Namespace: Mono.Unix.Native
Assembly: Mono.Posix (in Mono.Posix.dll)
Assembly Versions: 1.0.5000.0, 2.0.0.0, 4.0.0.0