… | |
… | |
2104 | ev_syserr ("(libev) error creating signal/async pipe"); |
2104 | ev_syserr ("(libev) error creating signal/async pipe"); |
2105 | |
2105 | |
2106 | fd_intern (fds [0]); |
2106 | fd_intern (fds [0]); |
2107 | } |
2107 | } |
2108 | |
2108 | |
2109 | fd_intern (fds [1]); |
|
|
2110 | |
|
|
2111 | evpipe [0] = fds [0]; |
2109 | evpipe [0] = fds [0]; |
2112 | |
2110 | |
2113 | if (evpipe [1] < 0) |
2111 | if (evpipe [1] < 0) |
2114 | evpipe [1] = fds [1]; /* first call, set write fd */ |
2112 | evpipe [1] = fds [1]; /* first call, set write fd */ |
2115 | else |
2113 | else |
… | |
… | |
2120 | /* so must not be executed on windows */ |
2118 | /* so must not be executed on windows */ |
2121 | |
2119 | |
2122 | dup2 (fds [1], evpipe [1]); |
2120 | dup2 (fds [1], evpipe [1]); |
2123 | close (fds [1]); |
2121 | close (fds [1]); |
2124 | } |
2122 | } |
|
|
2123 | |
|
|
2124 | fd_intern (evpipe [1]); |
2125 | |
2125 | |
2126 | ev_io_set (&pipe_w, evpipe [0] < 0 ? evpipe [1] : evpipe [0], EV_READ); |
2126 | ev_io_set (&pipe_w, evpipe [0] < 0 ? evpipe [1] : evpipe [0], EV_READ); |
2127 | ev_io_start (EV_A_ &pipe_w); |
2127 | ev_io_start (EV_A_ &pipe_w); |
2128 | ev_unref (EV_A); /* watcher should not keep loop alive */ |
2128 | ev_unref (EV_A); /* watcher should not keep loop alive */ |
2129 | } |
2129 | } |