---
st.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/st.c b/st.c
index 0628707..d5cfd74 100644
--- a/st.c
+++ b/st.c
@@ -824,10 +824,15 @@ ttyread(void)
static int buflen = 0;
int written;
int ret;
+ pid_t ret_pid;
/* append read bytes to unprocessed bytes */
- if ((ret = read(cmdfd, buf+buflen, LEN(buf)-buflen)) < 0)
- die("couldn't read from shell: %s\n", strerror(errno));
+ if ((ret = read(cmdfd, buf+buflen, LEN(buf)-buflen)) < 0) {
+ ret_pid = waitpid(pid, NULL, WNOHANG);
+ if (ret_pid == pid) /* child is dead */
+ exit(EXIT_SUCCESS);
+ else die("couldn't read from shell: %s\n", strerror(errno));
+ }
buflen += ret;
written = twrite(buf, buflen, 0);
--
2.17.0