Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/urwid/vterm.py b/urwid/vterm.py
- index 76f9611..d832be6 100644
- --- a/urwid/vterm.py
- +++ b/urwid/vterm.py
- @@ -1390,11 +1390,16 @@ class Terminal(BoxWidget):
- else:
- os.execvpe(self.command[0], self.command, env)
- - if self.main_loop is None:
- - fcntl.fcntl(self.master, fcntl.F_SETFL, os.O_NONBLOCK)
- + fcntl.fcntl(self.master, fcntl.F_SETFL, os.O_NONBLOCK)
- + self.master = os.fdopen(self.master, 'w+', 0)
- atexit.register(self.terminate)
- + def signal(self, signo):
- + if self.pid <= 0:
- + return
- + return os.kill(self.pid, signo)
- +
- def terminate(self):
- if self.terminated:
- return
- @@ -1408,7 +1413,7 @@ class Terminal(BoxWidget):
- for sig in (signal.SIGHUP, signal.SIGCONT, signal.SIGINT,
- signal.SIGTERM, signal.SIGKILL):
- try:
- - os.kill(self.pid, sig)
- + self.signal(sig)
- pid, status = os.waitpid(self.pid, os.WNOHANG)
- except OSError:
- break
- @@ -1420,8 +1425,7 @@ class Terminal(BoxWidget):
- os.waitpid(self.pid, 0)
- except OSError:
- pass
- -
- - os.close(self.master)
- + self.master.close()
- def beep(self):
- self._emit('beep')
- @@ -1437,7 +1441,7 @@ class Terminal(BoxWidget):
- def flush_responses(self):
- for string in self.response_buffer:
- - os.write(self.master, string.encode('ascii'))
- + self.master.write(string.encode('ascii'))
- self.response_buffer = []
- def set_termsize(self, width, height):
- @@ -1520,8 +1524,8 @@ class Terminal(BoxWidget):
- data = ''
- try:
- - data = os.read(self.master, 4096)
- - except OSError, e:
- + data = self.master.read(4096)
- + except (IOError,OSError), e:
- if e.errno == 5: # End Of File
- data = ''
- elif e.errno == errno.EWOULDBLOCK: # empty buffer
- @@ -1612,4 +1616,4 @@ class Terminal(BoxWidget):
- if sys.version_info[0] >= 3:
- key = bytes(key, 'ascii')
- - os.write(self.master, key)
- + self.master.write(key)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement