Python os 模块,kill() 实例源码

我们从Python开源项目中,提取了以下50个代码示例,用于说明如何使用os.kill()

项目:data_pipeline    作者:Yelp    | 项目源码 | 文件源码
def set_zombie_refresh_to_fail(self, refresh_job):
        current_pid = refresh_job.pid
        if current_pid is None:
            return

        p = psutil.Process(current_pid)
        if p.status() != psutil.STATUS_ZOMBIE:
            return

        refresh = self.schematizer.get_refresh_by_id(
            refresh_job.refresh_id
        )
        if refresh.status == RefreshStatus.IN_PROGRESS:
            # Must update manually (not relying on the signal),
            # as the process may not properly handle the signal
            # if it's a zombie
            self.schematizer.update_refresh(
                refresh_id=refresh_job.refresh_id,
                status=RefreshStatus.FAILED,
                offset=0
            )
            source = refresh_job.source
            del self.active_refresh_jobs[source]
        os.kill(current_pid, signal.SIGINT)
项目:monasca-transform    作者:openstack    | 项目源码 | 文件源码
def test_transform_service_heartbeat(self, coordinator):

        # mock coordinator
        fake_kazoo_driver = MagicMock(name="MagicKazooDriver",
                                      spec=KazooDriver)
        coordinator.return_value = fake_kazoo_driver

        # option1
        serv_thread = transform_service.TransformService()
        serv_thread.daemon = True
        serv_thread.start()
        time.sleep(2)

        # option2
        # mocks dont seem to work when spawning a service
        # pid = _spawn_transform_service()
        # time.sleep()
        # os.kill(pid, signal.SIGNAL_SIGTERM)

        fake_kazoo_driver.heartbeat.assert_called_with()
项目:core-framework    作者:RedhawkSDR    | 项目源码 | 文件源码
def stop(self):
        self._log.debug("stop()")
        if self.get_commandAlive() == True:
            for sig, timeout in self.STOP_SIGNALS:
                try:
                    os.kill(self._pid, sig)
                except OSError:
                    self._pid = None
                    return
                if timeout != None:
                    giveup_time = time.time() + timeout
                    while os.waitpid(self._pid, os.WNOHANG) == (0,0):
                        time.sleep(0.1)
                        if time.time() > giveup_time:
                            break
                else:
                    # Wait until there is a response
                    os.waitpid(self._pid, 0)
            self._pid = None

    ######################################
    # Implement specific property setters/getters
项目:core-framework    作者:RedhawkSDR    | 项目源码 | 文件源码
def get_commandAlive(self):
        if self._pid != None:
            try:
                os.kill(self._pid, 0)
                if os.waitpid(self._pid, os.WNOHANG) == (0,0):
                    return True
                else:
                    return False
            except OSError:
                pass
        return False
项目:core-framework    作者:RedhawkSDR    | 项目源码 | 文件源码
def stop(self):
        self._log.debug("stop()")
        if self.get_commandAlive() == True:
            for sig, timeout in self.STOP_SIGNALS:
                try:
                    os.kill(self._pid, sig)
                except OSError:
                    self._pid = None
                    return
                if timeout != None:
                    giveup_time = time.time() + timeout
                    while os.waitpid(self._pid, os.WNOHANG) == (0,0):
                        time.sleep(0.1)
                        if time.time() > giveup_time:
                            break
                else:
                    # Wait until there is a response
                    os.waitpid(self._pid, 0)
            self._pid = None

    ######################################
    # Implement specific property setters/getters
项目:core-framework    作者:RedhawkSDR    | 项目源码 | 文件源码
def stop(self):
        self._log.debug("%s.stop()", self.naming_service_name)
        if self.query_commandAlive() == True:
            for sig, timeout in self.STOP_SIGNALS:
                try:
                    os.kill(self._pid, sig)
                except OSError:
                    self._pid = None
                    return
                if timeout != None:
                    giveup_time = time.time() + timeout
                    while os.waitpid(self._pid, os.WNOHANG) == (0,0):
                        time.sleep(0.1)
                        if time.time() > giveup_time:
                            break
                else:
                    # Wait until there is a response
                    os.waitpid(self._pid, 0)
            self._pid = None
项目:core-framework    作者:RedhawkSDR    | 项目源码 | 文件源码
def stop(self):
        self._log.debug("stop()")
        if self.query_commandAlive() == True:
            for sig, timeout in self.STOP_SIGNALS:
                try:
                    os.kill(self._pid, sig)
                except OSError:
                    self._pid = None
                    return
                if timeout != None:
                    giveup_time = time.time() + timeout
                    while os.waitpid(self._pid, os.WNOHANG) == (0,0):
                        time.sleep(0.1)
                        if time.time() > giveup_time:
                            break
                else:
                    # Wait until there is a response
                    os.waitpid(self._pid, 0)
            self._pid = None

    ######################################
    # Implement specific property setters/getters
项目:core-framework    作者:RedhawkSDR    | 项目源码 | 文件源码
def stop(self):
        self._log.debug("stop()")
        if self.get_commandAlive() == True:
            for sig, timeout in self.STOP_SIGNALS:
                try:
                    os.kill(self._pid, sig)
                except OSError:
                    self._pid = None
                    return
                if timeout != None:
                    giveup_time = time.time() + timeout
                    while os.waitpid(self._pid, os.WNOHANG) == (0,0):
                        time.sleep(0.1)
                        if time.time() > giveup_time:
                            break
                else:
                    # Wait until there is a response
                    os.waitpid(self._pid, 0)
            self._pid = None

    ######################################
    # Implement specific property setters/getters
项目:core-framework    作者:RedhawkSDR    | 项目源码 | 文件源码
def stop(self):
        self._log.debug("stop()")
        try:
            if self.get_commandAlive() == True:
                for sig, timeout in self.STOP_SIGNALS:
                    try:
                        os.kill(self._pid, sig)
                    except OSError:
                        self._pid = None
                        return
                    if timeout != None:
                        giveup_time = time.time() + timeout
                        while os.waitpid(self._pid, os.WNOHANG) == (0,0):
                            time.sleep(0.1)
                            if time.time() > giveup_time:
                                break
                    else:
                        # Wait until there is a response
                        os.waitpid(self._pid, 0)
                self._pid = None
        finally:
            Resource.stop(self)

    # CF::LifeCycle
项目:core-framework    作者:RedhawkSDR    | 项目源码 | 文件源码
def stop(self):
        self._log.debug("stop()")
        if self.get_commandAlive() == True:
            for sig, timeout in self.STOP_SIGNALS:
                try:
                    os.kill(self._pid, sig)
                except OSError:
                    self._pid = None
                    return
                if timeout != None:
                    giveup_time = time.time() + timeout
                    while os.waitpid(self._pid, os.WNOHANG) == (0,0):
                        time.sleep(0.1)
                        if time.time() > giveup_time:
                            break
                else:
                    # Wait until there is a response
                    os.waitpid(self._pid, 0)
            self._pid = None

    ######################################
    # Implement specific property setters/getters
项目:core-framework    作者:RedhawkSDR    | 项目源码 | 文件源码
def stop(self):
        self._log.debug("stop()")
        if self.query_prop_commandAlive() == True:
            for sig, timeout in self.STOP_SIGNALS:
                try:
                    os.kill(self._pid, sig)
                except OSError:
                    self._pid = None
                    return
                if timeout != None:
                    giveup_time = time.time() + timeout
                    while os.waitpid(self._pid, os.WNOHANG) == (0,0):
                        time.sleep(0.1)
                        if time.time() > giveup_time:
                            break
                else:
                    # Wait until there is a response
                    os.waitpid(self._pid, 0)
            self._pid = None

    ######################################
    # Implement specific property setters/getters
项目:core-framework    作者:RedhawkSDR    | 项目源码 | 文件源码
def _test_ShutdownParent(self, node):
        self._setupDevices(node)

        # test aggregate device releaseObject functionality
        pids = getChildren(self._devBooter.pid)
        self._parentDevice.releaseObject()
        for pid in pids:
            number_attempts = 0
            while True:
                try:
                    os.kill(pid, 0) # check to see if the process is still alive
                    time.sleep(0.5)
                    number_attempts+=1
                except:
                    break
                if number_attempts == 5:
                    break
        pids = getChildren(self._devBooter.pid)
        self.assertEqual(len(self._devMgr._get_registeredDevices()), 0)
        # make sure the child device was also released
        self.assertEqual(len(pids), 0)

        self._devMgr.shutdown()
        self.assert_(self.waitTermination(self._devBooter))
        self.assertEqual(len(self._domMgr._get_deviceManagers()), 0)
项目:core-framework    作者:RedhawkSDR    | 项目源码 | 文件源码
def test_NSCleanup(self):
        domain_name = self._domMgr._get_name()
        ns_domMgr = URI.stringToName("%s/%s" % (domain_name, domain_name))
        ns_domMgrCtx = URI.stringToName("%s" % (domain_name))
        ns_ODM = URI.stringToName("%s/%s" % (domain_name, "ODM_Channel"))
        ns_IDM = URI.stringToName("%s/%s" % (domain_name, "IDM_Channel"))
        domCtx_ref = self._root.resolve(ns_domMgrCtx)
        domMgr_ref = self._root.resolve(ns_domMgr)
        ODM_ref = self._root.resolve(ns_ODM)
        IDM_ref = self._root.resolve(ns_IDM)
        self.assertNotEqual(domCtx_ref, None)
        self.assertNotEqual(domMgr_ref, None)
        self.assertNotEqual(ODM_ref, None)
        self.assertNotEqual(IDM_ref, None)
        os.kill(self._domainBooter.pid, signal.SIGINT)
        self.waitTermination(self._domainBooter)
        self.assertRaises(CosNaming.NamingContext.NotFound, self._root.resolve, ns_domMgrCtx)
项目:core-framework    作者:RedhawkSDR    | 项目源码 | 文件源码
def test_CatatrophicUnregister(self):
        # Test that if a device manager dies unexpectedly and then re-registers there are no problems
        devmgr_nb, devMgr = self.launchDeviceManager("/nodes/test_SelfTerminatingDevice_node/DeviceManager.dcd.xml")
        self.assertNotEqual(devMgr, None)

        # NOTE These assert check must be kept in-line with the DeviceManager.dcd.xml
        self.assertEqual(len(devMgr._get_registeredDevices()), 1)

        devs = devMgr._get_registeredDevices()
        pids = getChildren(devmgr_nb.pid)
        for devpid in pids:
            os.kill(devpid, signal.SIGKILL)
        os.kill(devmgr_nb.pid, signal.SIGKILL)

        self.waitTermination(devmgr_nb)

        devmgr_nb, devMgr = self.launchDeviceManager("/nodes/test_SelfTerminatingDevice_node/DeviceManager.dcd.xml")
        self.assertNotEqual(devMgr, None)
        self.assertEqual(len(devMgr._get_registeredDevices()), 1)

        # Test that the DCD file componentproperties get pushed to configure()
        # as per DeviceManager requirement SR:482
        devMgr.shutdown()

        self.assert_(self.waitTermination(devmgr_nb), "Nodebooter did not die after shutdown")
项目:core-framework    作者:RedhawkSDR    | 项目源码 | 文件源码
def test_DeviceManagerSurprise(self):
        self._nb_domMgr, self._domMgr = self.launchDomainManager(endpoint="giop:tcp::5679", dbURI=self._dbfile)
        self.assertEqual(len(self._domMgr._get_deviceManagers()), 0)

        # Kill the domainMgr
        os.kill(self._nb_domMgr.pid, signal.SIGKILL)
        if not self.waitTermination(self._nb_domMgr):
            self.fail("Domain Manager Failed to Die")

        self._nb_devMgr, devMgr = self.launchDeviceManager("/nodes/test_BasicTestDevice_node/DeviceManager.dcd.xml", wait=False)
        # this sleep is needed to allow the Device Manager to figure out that the Domain Manager is not available
        time.sleep(1)

        # Start the domainMgr again
        self._nb_domMgr, newDomMgr = self.launchDomainManager(endpoint="giop:tcp::5679", dbURI=self._dbfile)
        time.sleep(1) # sleep needed to make sure that the Device Manager has registered with the Domain Manager

        node_name = 'BasicTestDevice_node'
        domainName = scatest.getTestDomainName()
        devMgrURI = URI.stringToName("%s/%s/BasicTestDevice1" % (domainName, node_name))
        dev = self._root.resolve(devMgrURI)
        self.assertNotEqual(dev, None)

        self.assertEqual(len(self._domMgr._get_deviceManagers()), 1)
项目:core-framework    作者:RedhawkSDR    | 项目源码 | 文件源码
def test_DeviceManagerRegisterWhileDomainManagerCrashed(self):
        domBooter, domMgr = self.launchDomainManager(endpoint="giop:tcp::5679", dbURI=self._dbfile)
        self.assertNotEqual(domMgr, None)

        # Forcibly terminate the domain manager to simulate a crash
        os.kill(domBooter.pid, signal.SIGKILL)
        if not self.waitTermination(domBooter):
            self.fail("DomainManager failed to die")

        time.sleep(2)
        # Start the node; we cannot get the object reference because the
        # DomainManager is down, so waiting is pointless right now.
        dcdFile = "/nodes/test_PortTestDevice_node/DeviceManager.dcd.xml"
        devBooter, unused = self.launchDeviceManager(dcdFile, wait=False)

        time.sleep(2)
        # Restart the DomainManager
        domBooter, domMgr = self.launchDomainManager(endpoint="giop:tcp::5679", dbURI=self._dbfile)
        self.assertNotEqual(domMgr, None)

        # Wait for the DeviceManager and make sure it registers.
        devMgr = self.waitDeviceManager(devBooter, dcdFile)
        self.assertNotEqual(devMgr, None)
项目:core-framework    作者:RedhawkSDR    | 项目源码 | 文件源码
def terminateChild(self, child, signals=(signal.SIGINT, signal.SIGTERM)):
        if child.poll() != None:
           return
        try:
            #self.waitTermination(child)

            for sig in signals:
                #print "sending signal " + str(sig) + " to pid:" + str(child.pid)
                os.kill(child.pid, sig)
                if self.waitTermination(child):
                    break
            child.wait()
        except OSError, e:
            #print "terminateChild: pid:" + str(child.pid) + " OS ERROR:" + str(e)
            pass
        finally:
            pass
项目:stackimpact-python    作者:stackimpact    | 项目源码 | 文件源码
def register_signal(signal_number, handler_func, once = False):
    prev_handler = None

    def _handler(signum, frame):
        skip_prev = handler_func(signum, frame)

        if not skip_prev:
            if callable(prev_handler):
                if once:
                    signal.signal(signum, prev_handler)
                prev_handler(signum, frame)
            elif prev_handler == signal.SIG_DFL and once:
                signal.signal(signum, signal.SIG_DFL)
                os.kill(os.getpid(), signum)

    prev_handler = signal.signal(signal_number, _handler)
项目:stackimpact-python    作者:stackimpact    | 项目源码 | 文件源码
def test_register_signal(self):
        if runtime_info.OS_WIN:
            return

        result = {'handler': 0}

        def _handler(signum, frame):
            result['handler'] += 1

        register_signal(signal.SIGUSR1, _handler)

        os.kill(os.getpid(), signal.SIGUSR1)
        os.kill(os.getpid(), signal.SIGUSR1)

        signal.signal(signal.SIGUSR1, signal.SIG_DFL)

        self.assertEqual(result['handler'], 2)
项目:seb    作者:second-reality    | 项目源码 | 文件源码
def kill(self):
        if not self.qemu:
            return

        try:
            self.qemu = None
            os.kill(self.current_qemu_pid, signal.SIGKILL)
            os.waitpid(self.current_qemu_pid, 0)
            self.current_qemu_pid = -1
        except OSError: # process may be finished by kill already
            pass

        LOG.debug('let gdb notice process was killed')
        try:
            execute_gdb_command('detach')
            raise RuntimeError('gdb should have disconnected and raise gdb.error')
        except gdb.error as e:
            LOG.debug('catch expected exception: ' + str(e))
项目:pscheduler    作者:perfsonar    | 项目源码 | 文件源码
def test_log(self):
        """Logging tests"""

        # Not much to test here but exercise the code nonetheless
        # for regression/coverage.

        log = Log(verbose=False, prefix='test')

        log.debug("Invisible debug.")

        try:
            raise ValueError("Test exception")
        except ValueError:
            log.exception("Test exception with message")

        for num in range(1, 5):
            log.debug("Debug")
            log.info("Info")
            log.warning("Warning")
            log.error("Error")
            log.critical("Crtitical")
            os.kill(os.getpid(),
                    signal.SIGUSR1 if (num % 2) != 0 else signal.SIGUSR2)
项目:virtualbmc    作者:umago    | 项目源码 | 文件源码
def stop(sel, domain_name):
        LOG.debug('Stopping Virtual BMC for domain %s', domain_name)
        domain_path = os.path.join(utils.CONFIG_PATH, domain_name)
        if not os.path.exists(domain_path):
            raise exception.DomainNotFound(domain=domain_name)

        pidfile_path = os.path.join(domain_path, 'pid')
        pid = None
        try:
            with open(pidfile_path, 'r') as f:
                pid = int(f.read())
        except IOError:
            raise exception.VirtualBMCError(
                'Error stopping the domain %s: PID file not '
                'found' % domain_name)
        else:
            os.remove(pidfile_path)

        try:
            os.kill(pid, signal.SIGKILL)
        except OSError:
            pass
项目:PyExPool    作者:eXascaleInfolab    | 项目源码 | 文件源码
def terminationHandler(cls, signal=None, frame=None, terminate=True):
        """Signal termination handler

        signal  - raised signal
        frame  - origin stack frame
        terminate  - whether to terminate the application
        """
        #if signal == signal.SIGABRT:
        #   os.killpg(os.getpgrp(), signal)
        #   os.kill(os.getpid(), signal)

        if cls._execpool:
            del cls._execpool  # Destructors are caled later
            # Define _execpool to avoid unnessary trash in the error log, which might
            # be caused by the attempt of subsequent deletion on destruction
            cls._execpool = None  # Note: otherwise _execpool becomes undefined
        if terminate:
            sys.exit()  # exit(0), 0 is the default exit code.
项目:code    作者:ActiveState    | 项目源码 | 文件源码
def test_all_exit_sigs_with_sig(self):
            # Same as above but the process is terminated by a signal
            # instead of exiting cleanly.
            for sig in TEST_SIGNALS:
                ret = pyrun(textwrap.dedent(
                    """
                    import functools, os, signal, imp
                    mod = imp.load_source("mod", r"{modname}")

                    def foo(s):
                        with open(r"{testfn}", "ab") as f:
                            f.write(s)

                    signal.signal({sig}, functools.partial(foo, b'0'))
                    mod.register_exit_fun(functools.partial(foo, b'1'))
                    mod.register_exit_fun(functools.partial(foo, b'2'))
                    os.kill(os.getpid(), {sig})
                    """.format(modname=os.path.abspath(__file__),
                               testfn=TESTFN, sig=sig)
                ))
                self.assertEqual(ret, sig)
                with open(TESTFN, "rb") as f:
                    self.assertEqual(f.read(), b"210")
                safe_remove(TESTFN)
项目:code    作者:ActiveState    | 项目源码 | 文件源码
def input(s, stdout = True, timeout = 2,
            prompt = rgx2nd(('(.+)', 'py3to2 server: \\1'), ),
            subprompt = rgx2nd(('>>> ', '', None), ),
            fndexc = re.compile('\WTraceback '),
            ):
    self = _server
    if not s: return
    SERVER.stdin.write(s)
    try:
      buf = ''
      SERVER.stdin.write("\n\nimport os, signal; os.kill(CLIENTPID, signal.SIGINT)\n")
      time.sleep(timeout)
      raise IOError('py3to2 server not responding to input: %s'%repr(s))
    except KeyboardInterrupt:
      buf = os.read(SERVERIO[0], self.bufsize)
      buf = subprompt.sub(buf)
      if prompt: buf = prompt.sub(buf)
    if fndexc.search(buf): raise IOError('py3to2 server input: %s\n%s'%(s, buf))
    if stdout: sys.stdout.write(buf)
    else: return buf
项目:code    作者:ActiveState    | 项目源码 | 文件源码
def input(s, stdout = True, timeout = 2,
            prompt = rgx2nd(('(.+)', 'py3to2 server: \\1'), ),
            subprompt = rgx2nd(('>>> ', '', None), ),
            fndexc = re.compile('\WTraceback '),
            ):
    self = _server
    if not s: return
    SERVER.stdin.write(s)
    try:
      buf = ''
      SERVER.stdin.write("\n\nimport os, signal; os.kill(CLIENTPID, signal.SIGINT)\n")
      time.sleep(timeout)
      raise IOError('py3to2 server not responding to input: %s'%repr(s))
    except KeyboardInterrupt:
      buf = os.read(SERVERIO[0], self.bufsize)
      buf = subprompt.sub(buf)
      if prompt: buf = prompt.sub(buf)
    if fndexc.search(buf): raise IOError('py3to2 server input: %s\n%s'%(s, buf))
    if stdout: sys.stdout.write(buf)
    else: return buf
项目:TerminalView    作者:Wramberg    | 项目源码 | 文件源码
def stop(self):
        """
        Stop the shell
        """
        if self.is_running():
            try:
                os.kill(self._shell_pid, signal.SIGTERM)
            except OSError:
                pass

        start = time.time()
        while self.is_running() and (time.time() < (start + 0.2)):
            time.sleep(0.05)

        if self.is_running():
            utils.ConsoleLogger.log("Failed to stop shell process")
        else:
            utils.ConsoleLogger.log("Shell process stopped")
项目:SPF    作者:Exploit-install    | 项目源码 | 文件源码
def cleanup(self):
        print
        if (self.webserver is not None):
            if (self.config["daemon_web"]):
                self.display.alert("Webserver is still running as requested.")
            else:
                # send SIGTERM to the web process
                self.display.output("stopping the webserver")
                self.webserver.send_signal(signal.SIGINT)
                # delete the pid file
                os.remove(self.pid_path + "spfwebsrv.pid") 
                # as a double check, manually kill the process
                self.killProcess(self.webserverpid)
        # call report generation
        self.generateReport()
        # exit
        sys.exit(0)

    #----------------------------
    # Kill specified process
    #----------------------------
项目:geekcloud    作者:Mr-Linus    | 项目源码 | 文件源码
def kill_invalid_connection():
    unfinished_logs = Log.objects.filter(is_finished=False)
    now = datetime.datetime.now()
    now_timestamp = int(time.mktime(now.timetuple()))

    for log in unfinished_logs:
        try:
            log_file_mtime = int(os.stat('%s.log' % log.log_path).st_mtime)
        except OSError:
            log_file_mtime = 0

        if (now_timestamp - log_file_mtime) > 3600:
            if log.login_type == 'ssh':
                try:
                    os.kill(int(log.pid), 9)
                except OSError:
                    pass
            elif (now - log.start_time).days < 1:
                continue

            log.is_finished = True
            log.end_time = now
            log.save()
            logger.warn('kill log %s' % log.log_path)
项目:pykit    作者:baishancloud    | 项目源码 | 文件源码
def stop(self):

        pid = None

        if not os.path.exists(self.pidfile):

            logger.debug('pidfile not exist:' + self.pidfile)
            return

        try:
            pid = _read_file(self.pidfile)
            pid = int(pid)
            os.kill(pid, signal.SIGTERM)
            return

        except Exception as e:
            logger.warn('{e} while get and kill pid={pid}'.format(
                e=repr(e), pid=pid))
项目:ave    作者:sonyxperiadev    | 项目源码 | 文件源码
def kill_cmd(self):
        if self.cmd_pid > 1:
            try:
                os.close(self.cmd_fd)
            except OSError, e:
                if e.errno == errno.EBADF:
                    pass # already closed
                else:
                    raise e
            try:
                os.kill(self.cmd_pid, signal.SIGKILL)
                os.waitpid(self.cmd_pid, 0)
            except OSError, e:
                if e.errno not in [errno.ECHILD, errno.ESRCH]:
                    raise Exception('unhandled errno: %d' % e.errno)
            self.cmd_pid = -1
项目:ave    作者:sonyxperiadev    | 项目源码 | 文件源码
def kill_cmd(self):
        if self.cmd_pid > 1:
            try:
                os.close(self.cmd_fd)
            except OSError, e:
                if e.errno == errno.EBADF:
                    pass # already closed
                else:
                    raise e
            try:
                os.kill(self.cmd_pid, signal.SIGKILL)
                os.waitpid(self.cmd_pid, 0)
            except OSError, e:
                if e.errno not in [errno.ECHILD, errno.ESRCH]:
                    raise Exception('unhandled errno: %d' % e.errno)
            self.cmd_pid = -1
项目:ave    作者:sonyxperiadev    | 项目源码 | 文件源码
def _kill_ssh(self):
        if self.ssh_pid > 1:
            try:
                os.kill(self.ssh_pid, signal.SIGTERM)
                os.waitpid(self.ssh_pid, 0)
            except OSError, e:
                if e.errno not in [errno.ECHILD, errno.ESRCH]:
                    raise Exception('unhandled errno: %d' % e.errno)
            self.self_pid = -1
            try:
                os.close(self.ssh_fd)
            except OSError, e:
                if e.errno == errno.EBADF:
                    pass # already closed
                else:
                    print 'WHAT?', e
                    raise e
项目:ave    作者:sonyxperiadev    | 项目源码 | 文件源码
def t01(factory):
    pretty = '%s t1' % __file__
    print(pretty)

    ctrl = factory.make_master('master')
    pid  = ctrl.get_pid()
    os.kill(pid, signal.SIGUSR1)

    try:
        pid = ctrl.get_pid()
    except ConnectionClosed, e:
        print('FAIL %s: SIGUSR1 killed the process: %s' % (pretty, e))
        return False
    except Exception, e:
        print('FAIL %s: unknown error: %s' % (pretty, e))
        return False

    return True

# check that trace files are written to <home>/.ave/hickup with predictable
# file names
项目:ave    作者:sonyxperiadev    | 项目源码 | 文件源码
def t04(factory):
    pretty = '%s t4' % __file__
    print(pretty)

    ctrl  = factory.make_master('master')
    bpid  = ctrl.get_pid()
    spids = ctrl.get_session_pids()

    if [pid for pid in spids if pid < 2] != []:
        print('FAIL %s: impossible session PIDs: %d' % (pretty, spids))
        return False

    # signal the broker and wait for the hickup directory to appear. the signal
    # should be propagated to the equipment lister long before the directory is
    # created.
    os.kill(bpid, signal.SIGUSR1)
    path = os.path.join(factory.HOME.path, '.ave', 'hickup')
    wait_hickup_dir(path, 3)

    spids2 = ctrl.get_session_pids()
    if spids2 != spids:
        print('FAIL %s: sessions affected: %s != %s' % (pretty, spids2, spids))
        return False

    return True
项目:ave    作者:sonyxperiadev    | 项目源码 | 文件源码
def terminate(self):
        try:
            os.kill(self.pid, signal.SIGTERM)
        except OSError, e:
            if e.errno == errno.ESRCH:
                return # process already killed by someone else
            if e.errno == errno.EPERM:
                # this can only happen if the original session was started as
                # a different user. e.g. if the broker has been restarted with
                # --demote=<some other user>. but don't worry too much about it
                # as sessions are eventually terminated anyway.
                print(
                    'WARNING: session with PID=%d not terminated because it '
                    'is owned by a different user. did you restart a broker '
                    'as a different user?' % self.pid
                )
                return
            raise e
项目:ave    作者:sonyxperiadev    | 项目源码 | 文件源码
def __call__(self, fn):
        def decorated(*args, **kwargs):
            pretty = '%s %s' % (fn.func_code.co_filename, fn.func_name)
            print(pretty)
            self.HOME = Workspace()
            self.processes = []
            os.makedirs(os.path.join(self.HOME.path, '.ave','config'))
            try:
                result = fn(pretty, self, *args, **kwargs)
            except:
                raise
            finally:
                self.kill()
                self.HOME.delete()
            return result
        return decorated
项目:ave    作者:sonyxperiadev    | 项目源码 | 文件源码
def t4():
    pretty = '%s t4' % __file__
    print(pretty)

    pid, fd = ave.cmd.run_bg('echo hello')
    poller  = select.poll()
    poller.register(fd, select.POLLIN)
    events  = poller.poll(1000) # milliseconds
    tmp     = ''
    for e in events:
        if not (e[1] & select.POLLIN):
            print('FAIL %s: unexpected poll event: %d' % (pretty, e[1]))
            os.kill(pid, signal.SIGKILL)
        tmp += os.read(fd, 1024)
    if not tmp.startswith('hello'):
        print('FAIL %s: wrong result: "%s"' % (pretty, tmp))

    os.kill(pid, signal.SIGKILL)
    os.waitpid(pid, 0)
    return True

# check that return value from executed program is correct
项目:ave    作者:sonyxperiadev    | 项目源码 | 文件源码
def t01(pretty, factory):
    ctrl = factory.make_control(home=factory.HOME.path)
    pid  = ctrl.get_pid()
    os.kill(pid, signal.SIGUSR1)

    try:
        pid = ctrl.get_pid()
    except ConnectionClosed, e:
        print('FAIL %s: SIGUSR1 killed the process: %s' % (pretty, e))
        return False
    except Exception, e:
        print('FAIL %s: unknown error: %s' % (pretty, e))
        return False

    return True

# check that trace files are written to <home>/.ave/hickup with predictable
# file names
项目:ave    作者:sonyxperiadev    | 项目源码 | 文件源码
def t03(pretty, factory):
    ctrl = factory.make_control(home=factory.HOME.path)
    pid  = ctrl.get_pid()
    ctrl.make_child()
    os.kill(pid, signal.SIGUSR1)

    path = os.path.join(factory.HOME.path, '.ave', 'hickup')
    wait_hickup_dir(path, 3)

    files = glob.glob(os.path.join(path, '*'))

    if len(files) != 2:
        print('FAIL %s: wrong number of files: %s' % (pretty, files))
        return False

    return True

# check that the signal is not propagated to non-ave processes such as external
# tools. these will otherwise terminate if they do not handle the signal.
项目:ave    作者:sonyxperiadev    | 项目源码 | 文件源码
def t10():
    pretty = '%s t10' % __file__
    print(pretty)

    s,p = find_free_port()
    q = Pipe()
    c = MockControl(p, None, s, [], q)
    c.start()
    r = RemoteControl(('',p), None, timeout=5)
    r.sync_ping()

    c.terminate()
    try:
        q.get(timeout=1)
    except Exception, e:
        print('FAIL %s: never got oob message: %s' % (pretty, str(e)))
        c.kill()
        return False
    c.join(2)

    return True

# check that two contollers with connections to each other discover when the
# other one shuts down
项目:alfred-mpd    作者:deanishe    | 项目源码 | 文件源码
def _process_exists(pid):
    """Check if a process with PID ``pid`` exists.

    :param pid: PID to check
    :type pid: ``int``
    :returns: ``True`` if process exists, else ``False``
    :rtype: ``Boolean``

    """
    try:
        os.kill(pid, 0)
    except OSError:  # not running
        return False
    return True
项目:Starfish    作者:BillWang139967    | 项目源码 | 文件源码
def stop(self):
        """
        Stop the daemon
        """
        # Get the pid from the pidfile
        try:
            pf = file(self.pidfile,'r')
            pid = int(pf.read().strip())
            pf.close()
        except IOError:
            pid = None

        if not pid:
            message = "pidfile %s does not exist. Daemon not running?\n"
            sys.stderr.write(message % self.pidfile)
            return # not an error in a restart

        # Try killing the daemon process       
        try:
            while 1:
                os.kill(pid, SIGTERM)
                time.sleep(0.1)
        except OSError, err:
            err = str(err)
            if err.find("No such process") > 0:
                if os.path.exists(self.pidfile):
                    os.remove(self.pidfile)
            else:
                print str(err)
                sys.exit(1)
项目:Starfish    作者:BillWang139967    | 项目源码 | 文件源码
def stop(self):
        """
        Stop the daemon
        """
        # Get the pid from the pidfile
        try:
            pf = file(self.pidfile,'r')
            pid = int(pf.read().strip())
            pf.close()
        except IOError:
            pid = None

        if not pid:
            message = "pidfile %s does not exist. Daemon not running?\n"
            sys.stderr.write(message % self.pidfile)
            return # not an error in a restart

        # Try killing the daemon process       
        try:
            while 1:
                os.kill(pid, SIGTERM)
                time.sleep(0.1)
        except OSError, err:
            err = str(err)
            if err.find("No such process") > 0:
                if os.path.exists(self.pidfile):
                    os.remove(self.pidfile)
            else:
                print str(err)
                sys.exit(1)
项目:pyradio-nepal    作者:sandipbgt    | 项目源码 | 文件源码
def close(self):
        self._stop()

        if self.process is not None:
            os.kill(self.process.pid, 15)
            self.process.wait()
        self.process = None
项目:IotCenter    作者:panjanek    | 项目源码 | 文件源码
def stop(self):
        try:
            pf = file(self.pidfile,'r')
            pid = int(pf.read().strip())
            pf.close()
        except IOError:
            pid = None

        if not pid:
            message = "pidfile %s does not exist. Daemon not running?\n"
            sys.stderr.write(message % self.pidfile)
            return # not an error in a restart

        print("killing process with pid {0}".format(pid))
        try:
            while 1:
                os.kill(pid, SIGTERM)
                time.sleep(0.1)
        except OSError, err:
            err = str(err)
            if err.find("No such process") > 0:
                if os.path.exists(self.pidfile):
                    os.remove(self.pidfile)
            else:
                print str(err)
                sys.exit(1)
项目:core-framework    作者:RedhawkSDR    | 项目源码 | 文件源码
def stop(self):
        os.kill(self.writer_proc.pid, signal.SIGINT)
项目:core-framework    作者:RedhawkSDR    | 项目源码 | 文件源码
def terminate(self):
        # Assuming stop() was already called, the reader and writer should have
        # already exited
        self.writer_proc.kill()
        self.reader_proc.kill()
        self.writer_proc.wait()
        self.reader_proc.wait()
项目:core-framework    作者:RedhawkSDR    | 项目源码 | 文件源码
def query_commandAlive(self):
        if self._pid != None:
            try:
                os.kill(self._pid, 0)
                if os.waitpid(self._pid, os.WNOHANG) == (0,0):
                    return True
                else:
                    return False
            except OSError:
                pass
        return False
项目:core-framework    作者:RedhawkSDR    | 项目源码 | 文件源码
def query_commandAlive(self):
        if self._pid != None:
            try:
                os.kill(self._pid, 0)
                if os.waitpid(self._pid, os.WNOHANG) == (0,0):
                    return True
                else:
                    return False
            except OSError:
                pass
        return False