tcmd: write() may block even with POLLOUT - neatvi - [fork] simple vi-type editor with UTF-8 support (HTM) git clone git://src.adamsgaard.dk/neatvi (DIR) Log (DIR) Files (DIR) Refs (DIR) README --- (DIR) commit 9bf5bfb3a0527155ff78c62a89f1dff81df6e113 (DIR) parent 57077e595860fb487d95316fc8dfc41df965342f (HTM) Author: Ali Gholami Rudi <ali@rudi.ir> Date: Mon, 1 Aug 2016 15:18:47 +0430 cmd: write() may block even with POLLOUT Diffstat: M cmd.c | 2 ++ 1 file changed, 2 insertions(+), 0 deletions(-) --- (DIR) diff --git a/cmd.c b/cmd.c t@@ -1,3 +1,4 @@ +#include <fcntl.h> #include <poll.h> #include <signal.h> #include <stdio.h> t@@ -69,6 +70,7 @@ char *cmd_pipe(char *cmd, char *ibuf, int iproc, int oproc) signal(SIGINT, SIG_IGN); term_done(); } + fcntl(ifd, F_SETFL, fcntl(ifd, F_GETFL, 0) | O_NONBLOCK); fds[0].fd = ofd; fds[0].events = POLLIN; fds[1].fd = ifd;