コード例 #1
0
    def __init__(self, wid, cmd, wdir, shell, uid=None, gid=None, env=None):
        self.wid = wid
        self.wdir = wdir
        self.shell = shell
        self.env = env
        self.cmd = cmd.replace('$WID', str(self.wid))

        self.uid = to_uid(uid)
        self.gid = to_gid(gid)

        def preexec_fn():
            if self.gid:
                try:
                    os.setgid(self.gid)
                except OverflowError:
                    if not ctypes:
                        raise
                    # versions of python < 2.6.2 don't manage unsigned int for
                    # groups like on osx or fedora
                    os.setgid(-ctypes.c_int(-self.gid).value)

            if self.uid:
                os.setuid(self.uid)

        self._worker = Popen(self.cmd.split(),
                             cwd=self.wdir,
                             shell=self.shell,
                             preexec_fn=preexec_fn,
                             env=self.env)
        self.started = time.time()
コード例 #2
0
    def test_get_info(self):

        worker = Popen(['top'], shell=True)
        try:
            info = worker.get_info()
        finally:
            worker.terminate()

        self.assertTrue(isinstance(info['pid'], int))
        self.assertEqual(info['nice'], 0)