| @node signal |
| @section @code{signal} |
| @findex signal |
| |
| POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/signal.html} |
| |
| Gnulib module: --- |
| |
| Portability problems fixed by Gnulib: |
| @itemize |
| @end itemize |
| |
| Portability problems not fixed by Gnulib: |
| @itemize |
| @item |
| This function crashes when invoked with invalid arguments on some platforms: |
| MSVC 14. |
| @item |
| On System V platforms, when the signal is triggered, the kernel uninstalls the |
| handler (i.e.@: resets the signal's action to SIG_DFL) before invoking the |
| handler. This opens the door to race conditions: undesired things happen |
| if the signal is triggered twice and the signal handler was not quick enough |
| reinstalling itself as a handler. On BSD platforms and glibc platforms, on the |
| other hand, when the signal is triggered, the kernel blocks the signal |
| before invoking the handler. This is saner, but POSIX still allows either |
| behavior. To avoid this problem, use @code{sigaction} instead of |
| @code{signal}. |
| @end itemize |