From fb1c778d4b5fde47537d84d4ae08fa76b9d0fa0b Mon Sep 17 00:00:00 2001 From: Youness Alaoui Date: Sat, 27 Dec 2014 18:01:42 -0500 Subject: [PATCH] Check for EOF on the serialCommunication module If Cura has terminated, stdin will be in EOF which will cause the readline to return an empty string. By catching that, we will be abl to quit instead of spamming stderr with ['']. Fixes #63 and possibly issue #45 as well. --- Cura/serialCommunication.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Cura/serialCommunication.py b/Cura/serialCommunication.py index efff5e0d..efc6e72d 100644 --- a/Cura/serialCommunication.py +++ b/Cura/serialCommunication.py @@ -51,9 +51,14 @@ class serialComm(object): pass def monitorStdin(self): - while not self._comm.isClosed(): - line = sys.stdin.readline().strip() - line = line.split(':', 1) + while not (self._comm.isClosed() or sys.stdin.closed): + line = sys.stdin.readline() + # If readline returns an empty string it means that + # we've hit stdin's EOF, probably because the parent was + # closed, so we need to exit as well instead of spamming stderr. + if line == '': + break + line = line.strip().split(':', 1) if line[0] == 'STOP': self._comm.cancelPrint() self._gcodeList = ['M110'] -- 2.30.2