… | |
… | |
2108 | |
2108 | |
2109 | When the first watcher gets started will libev actually register something |
2109 | When the first watcher gets started will libev actually register something |
2110 | with the kernel (thus it coexists with your own signal handlers as long as |
2110 | with the kernel (thus it coexists with your own signal handlers as long as |
2111 | you don't register any with libev for the same signal). |
2111 | you don't register any with libev for the same signal). |
2112 | |
2112 | |
2113 | Both the signal mask state (C<sigprocmask>) and the signal handler state |
|
|
2114 | (C<sigaction>) are unspecified after starting a signal watcher (and after |
|
|
2115 | sotpping it again), that is, libev might or might not block the signal, |
|
|
2116 | and might or might not set or restore the installed signal handler. |
|
|
2117 | |
|
|
2118 | If possible and supported, libev will install its handlers with |
2113 | If possible and supported, libev will install its handlers with |
2119 | C<SA_RESTART> (or equivalent) behaviour enabled, so system calls should |
2114 | C<SA_RESTART> (or equivalent) behaviour enabled, so system calls should |
2120 | not be unduly interrupted. If you have a problem with system calls getting |
2115 | not be unduly interrupted. If you have a problem with system calls getting |
2121 | interrupted by signals you can block all signals in an C<ev_check> watcher |
2116 | interrupted by signals you can block all signals in an C<ev_check> watcher |
2122 | and unblock them in an C<ev_prepare> watcher. |
2117 | and unblock them in an C<ev_prepare> watcher. |
|
|
2118 | |
|
|
2119 | =head3 The special problem of inheritance over execve |
|
|
2120 | |
|
|
2121 | Both the signal mask (C<sigprocmask>) and the signal disposition |
|
|
2122 | (C<sigaction>) are unspecified after starting a signal watcher (and after |
|
|
2123 | stopping it again), that is, libev might or might not block the signal, |
|
|
2124 | and might or might not set or restore the installed signal handler. |
|
|
2125 | |
|
|
2126 | While this does not matter for the signal disposition (libev never |
|
|
2127 | sets signals to C<SIG_IGN>, so handlers will be reset to C<SIG_DFL> on |
|
|
2128 | C<execve>), this matters for the signal mask: many programs do not expect |
|
|
2129 | many signals to be blocked. |
|
|
2130 | |
|
|
2131 | This means that before calling C<exec> (from the child) you should reset |
|
|
2132 | the signal mask to whatever "default" you expect (all clear is a good |
|
|
2133 | choice usually). |
2123 | |
2134 | |
2124 | =head3 Watcher-Specific Functions and Data Members |
2135 | =head3 Watcher-Specific Functions and Data Members |
2125 | |
2136 | |
2126 | =over 4 |
2137 | =over 4 |
2127 | |
2138 | |