Check signals after file descriptors
If a signal happens while processing an FD, it should be handled immediately, rather than waiting for another poll return.master
parent
29bd788660
commit
72d8749454
4
chat.c
4
chat.c
|
@ -150,6 +150,8 @@ int main(int argc, char *argv[]) {
|
|||
while (!self.quit) {
|
||||
int nfds = poll(fds, 2, -1);
|
||||
if (nfds < 0 && errno != EINTR) err(EX_IOERR, "poll");
|
||||
if (nfds > 0 && fds[0].revents) uiRead();
|
||||
if (nfds > 0 && fds[1].revents) ircRecv();
|
||||
|
||||
if (signals[SIGHUP]) self.quit = "zzz";
|
||||
if (signals[SIGINT] || signals[SIGTERM]) break;
|
||||
|
@ -162,8 +164,6 @@ int main(int argc, char *argv[]) {
|
|||
uiRead();
|
||||
}
|
||||
|
||||
if (nfds > 0 && fds[0].revents) uiRead();
|
||||
if (nfds > 0 && fds[1].revents) ircRecv();
|
||||
uiDraw();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue