##// END OF EJS Templates
Catch failures reading data from terminated subprocesses
Thomas Kluyver -
Show More
@@ -382,9 +382,21 b' class StreamCapturer(Thread):'
382 382 continue
383 383
384 384 ready = select(streams, [], [], 0.5)[0]
385 dead = []
385 386 with self.buffer_lock:
386 387 for fd in ready:
387 self.buffer.write(os.read(fd, 1024))
388 try:
389 self.buffer.write(os.read(fd, 1024))
390 except OSError as e:
391 import errno
392 if e.errno == errno.EBADF:
393 dead.append(fd)
394 else:
395 raise
396
397 with self.streams_lock:
398 for fd in dead:
399 self.streams.remove(fd)
388 400
389 401 def add_stream(self, fd):
390 402 with self.streams_lock:
General Comments 0
You need to be logged in to leave comments. Login now