]> git.eshelyaron.com Git - emacs.git/commitdiff
Make child signal read pipe non-blocking.
authorPhilipp Stephani <phst@google.com>
Tue, 19 Jan 2021 20:35:06 +0000 (21:35 +0100)
committerPhilipp Stephani <phst@google.com>
Tue, 19 Jan 2021 20:38:46 +0000 (21:38 +0100)
Otherwise Emacs might hang when trying to read the pipe twice in a
row.  This is consistent with the other file descriptors we pass to
'pselect'.

* src/process.c (child_signal_init): Make read end of pipe
non-blocking.

src/process.c

index 09f87908a45124b6a8a43e2e0b5039c9531513f7..57105982c15fcb6d8bc57bcd80a27153c9923fb6 100644 (file)
@@ -7179,6 +7179,8 @@ child_signal_init (void)
      exits.  */
   eassert (0 <= fds[0]);
   eassert (0 <= fds[1]);
+  if (fcntl (fds[0], F_SETFL, O_NONBLOCK) != 0)
+    emacs_perror ("fcntl");
   add_read_fd (fds[0], child_signal_read, NULL);
   fd_callback_info[fds[0]].flags &= ~KEYBOARD_FD;
   child_signal_read_fd = fds[0];