Show
Ignore:
Timestamp:
06/10/08 01:16:11 (6 months ago)
Author:
Ali Afshar <aafshar@…>
Children:
1184:dcd452686e90, 1205:d23edbcf8747
Message:

Set correct controlling terminal on VC commands. Patch from GC Birzan. lp:154107

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • pida/services/commander/commander.py

    r1157 r1183  
    2222 
    2323import os, subprocess 
     24import pty 
    2425 
    2526import gtk, gobject 
     
    284285            self._vte_fork(commandargs, env, cwd)  
    285286 
    286     def _python_fork_waiter(self, popen): 
    287         exit_code = popen.wait() 
     287    def _python_fork_waiter(self, pid): 
     288        stupid, exit_code = os.waitpid(pid, 0) 
    288289        return exit_code 
    289290 
     
    299300        env = dict(os.environ) 
    300301        env['TERM'] = 'xterm' 
    301         (master, slave) = os.openpty() 
    302         self.slave = slave 
    303         self.master = master 
    304         self._term.set_pty(master) 
    305         p = subprocess.Popen(commandargs, stdin=slave, stdout=slave, 
    306                              preexec_fn=self._python_fork_preexec_fn, 
    307                              stderr=slave, env=env, cwd=cwd, close_fds=True) 
    308         self._pid = p.pid 
    309         t = AsyncTask(self._python_fork_waiter, self._python_fork_complete) 
    310         t.start(p) 
     302        pid, fd = pty.fork() 
     303        if pid: 
     304            self._term.set_pty(fd) 
     305            self._pid = pid 
     306            t = AsyncTask(self._python_fork_waiter, self._python_fork_complete) 
     307            t.start(pid) 
     308        else: 
     309            self._python_fork_preexec_fn() 
     310            os.chdir(cwd) 
     311            os.execvpe(commandargs[0], commandargs, env) 
    311312 
    312313    def _python_fork_parse(self, commandargs, env, cwd, parser_func):