diff --git a/resources/site-packages/pulsar/daemon.py b/resources/site-packages/pulsar/daemon.py index e6b4d2caf..d7891e8bf 100644 --- a/resources/site-packages/pulsar/daemon.py +++ b/resources/site-packages/pulsar/daemon.py @@ -137,15 +137,17 @@ def pulsard_thread(monitor): # read. We count on the fact that Pulsar daemon flushes its log # output on \n, creating a pretty clean output import fcntl + import select fd = proc.stdout.fileno() fl = fcntl.fcntl(fd, fcntl.F_GETFL) fcntl.fcntl(fd, fcntl.F_SETFL, fl | os.O_NONBLOCK) while proc.poll() is None: - try: - log.info(proc.stdout.readline()) - continue - except IOError: - time.sleep(1) # nothing to read, sleep + to_read, _, _ = select.select([proc.stdout], [], []) + for obj in to_read: + line = obj.readline() + if line == "": # write end is closed + break + log.info(line) if proc.returncode == 0 or xbmc.abortRequested: break