… | |
… | |
1625 | |
1625 | |
1626 | =back |
1626 | =back |
1627 | |
1627 | |
1628 | =head3 Examples |
1628 | =head3 Examples |
1629 | |
1629 | |
1630 | Example: Try to exit cleanly on SIGINT and SIGTERM. |
1630 | Example: Try to exit cleanly on SIGINT. |
1631 | |
1631 | |
1632 | static void |
1632 | static void |
1633 | sigint_cb (struct ev_loop *loop, struct ev_signal *w, int revents) |
1633 | sigint_cb (struct ev_loop *loop, struct ev_signal *w, int revents) |
1634 | { |
1634 | { |
1635 | ev_unloop (loop, EVUNLOOP_ALL); |
1635 | ev_unloop (loop, EVUNLOOP_ALL); |
1636 | } |
1636 | } |
1637 | |
1637 | |
1638 | struct ev_signal signal_watcher; |
1638 | struct ev_signal signal_watcher; |
1639 | ev_signal_init (&signal_watcher, sigint_cb, SIGINT); |
1639 | ev_signal_init (&signal_watcher, sigint_cb, SIGINT); |
1640 | ev_signal_start (loop, &sigint_cb); |
1640 | ev_signal_start (loop, &signal_watcher); |
1641 | |
1641 | |
1642 | |
1642 | |
1643 | =head2 C<ev_child> - watch out for process status changes |
1643 | =head2 C<ev_child> - watch out for process status changes |
1644 | |
1644 | |
1645 | Child watchers trigger when your process receives a SIGCHLD in response to |
1645 | Child watchers trigger when your process receives a SIGCHLD in response to |
… | |
… | |
2242 | So when you want to use this feature you will always have to be prepared |
2242 | So when you want to use this feature you will always have to be prepared |
2243 | that you cannot get an embeddable loop. The recommended way to get around |
2243 | that you cannot get an embeddable loop. The recommended way to get around |
2244 | this is to have a separate variables for your embeddable loop, try to |
2244 | this is to have a separate variables for your embeddable loop, try to |
2245 | create it, and if that fails, use the normal loop for everything. |
2245 | create it, and if that fails, use the normal loop for everything. |
2246 | |
2246 | |
|
|
2247 | =head3 C<ev_embed> and fork |
|
|
2248 | |
|
|
2249 | While the C<ev_embed> watcher is running, forks in the embedding loop will |
|
|
2250 | automatically be applied to the embedded loop as well, so no special |
|
|
2251 | fork handling is required in that case. When the watcher is not running, |
|
|
2252 | however, it is still the task of the libev user to call C<ev_loop_fork ()> |
|
|
2253 | as applicable. |
|
|
2254 | |
2247 | =head3 Watcher-Specific Functions and Data Members |
2255 | =head3 Watcher-Specific Functions and Data Members |
2248 | |
2256 | |
2249 | =over 4 |
2257 | =over 4 |
2250 | |
2258 | |
2251 | =item ev_embed_init (ev_embed *, callback, struct ev_loop *embedded_loop) |
2259 | =item ev_embed_init (ev_embed *, callback, struct ev_loop *embedded_loop) |