當前位置: 首頁>>代碼示例>>Python>>正文


Python signal.CTRL_C_EVENT屬性代碼示例

本文整理匯總了Python中signal.CTRL_C_EVENT屬性的典型用法代碼示例。如果您正苦於以下問題:Python signal.CTRL_C_EVENT屬性的具體用法?Python signal.CTRL_C_EVENT怎麽用?Python signal.CTRL_C_EVENT使用的例子?那麽, 這裏精選的屬性代碼示例或許可以為您提供幫助。您也可以進一步了解該屬性所在signal的用法示例。


在下文中一共展示了signal.CTRL_C_EVENT屬性的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。

示例1: raise_sigint

# 需要導入模塊: import signal [as 別名]
# 或者: from signal import CTRL_C_EVENT [as 別名]
def raise_sigint():
    """
    Raising the SIGINT signal in the current process and all sub-processes.

    os.kill() only issues a signal in the current process (without subprocesses).
    CTRL+C on the console sends the signal to the process group (which we need).
    """
    if hasattr(signal, 'CTRL_C_EVENT'):
        # windows. Need CTRL_C_EVENT to raise the signal in the whole process group
        os.kill(os.getpid(), signal.CTRL_C_EVENT)
    else:
        # unix.
        pgid = os.getpgid(os.getpid())
        if pgid == 1:
            os.kill(os.getpid(), signal.SIGINT)
        else:
            os.killpg(os.getpgid(os.getpid()), signal.SIGINT) 
開發者ID:aetros,項目名稱:aetros-cli,代碼行數:19,代碼來源:__init__.py

示例2: test_CTRL_C_EVENT

# 需要導入模塊: import signal [as 別名]
# 或者: from signal import CTRL_C_EVENT [as 別名]
def test_CTRL_C_EVENT(self):
        from ctypes import wintypes
        import ctypes

        # Make a NULL value by creating a pointer with no argument.
        NULL = ctypes.POINTER(ctypes.c_int)()
        SetConsoleCtrlHandler = ctypes.windll.kernel32.SetConsoleCtrlHandler
        SetConsoleCtrlHandler.argtypes = (ctypes.POINTER(ctypes.c_int),
                                          wintypes.BOOL)
        SetConsoleCtrlHandler.restype = wintypes.BOOL

        # Calling this with NULL and FALSE causes the calling process to
        # handle Ctrl+C, rather than ignore it. This property is inherited
        # by subprocesses.
        SetConsoleCtrlHandler(NULL, 0)

        self._kill_with_event(signal.CTRL_C_EVENT, "CTRL_C_EVENT") 
開發者ID:IronLanguages,項目名稱:ironpython2,代碼行數:19,代碼來源:test_os.py

示例3: test_kill_terminate

# 需要導入模塊: import signal [as 別名]
# 或者: from signal import CTRL_C_EVENT [as 別名]
def test_kill_terminate(self):
        # subprocess.Popen()'s terminate(), kill() and send_signal() do
        # not raise exception after the process is gone. psutil.Popen
        # diverges from that.
        cmd = [PYTHON_EXE, "-c", "import time; time.sleep(60);"]
        with psutil.Popen(cmd, stdout=subprocess.PIPE,
                          stderr=subprocess.PIPE) as proc:
            proc.terminate()
            proc.wait()
            self.assertRaises(psutil.NoSuchProcess, proc.terminate)
            self.assertRaises(psutil.NoSuchProcess, proc.kill)
            self.assertRaises(psutil.NoSuchProcess, proc.send_signal,
                              signal.SIGTERM)
            if WINDOWS and sys.version_info >= (2, 7):
                self.assertRaises(psutil.NoSuchProcess, proc.send_signal,
                                  signal.CTRL_C_EVENT)
                self.assertRaises(psutil.NoSuchProcess, proc.send_signal,
                                  signal.CTRL_BREAK_EVENT) 
開發者ID:birforce,項目名稱:vnpy_crypto,代碼行數:20,代碼來源:test_process.py

示例4: test_CTRL_C_EVENT

# 需要導入模塊: import signal [as 別名]
# 或者: from signal import CTRL_C_EVENT [as 別名]
def test_CTRL_C_EVENT(self):
        from ctypes import wintypes
        import ctypes

        # Make a NULL value by creating a pointer with no argument.
        NULL = ctypes.POINTER(ctypes.c_int)()
        SetConsoleCtrlHandler = ctypes.windll.kernel32.SetConsoleCtrlHandler
        SetConsoleCtrlHandler.argtypes = (ctypes.POINTER(ctypes.c_int),
                                          wintypes.BOOL)
        SetConsoleCtrlHandler.restype = wintypes.BOOL

        # Calling this with NULL and FALSE causes the calling process to
        # handle CTRL+C, rather than ignore it. This property is inherited
        # by subprocesses.
        SetConsoleCtrlHandler(NULL, 0)

        self._kill_with_event(signal.CTRL_C_EVENT, "CTRL_C_EVENT") 
開發者ID:dxwu,項目名稱:BinderFilter,代碼行數:19,代碼來源:test_os.py

示例5: send_sigint

# 需要導入模塊: import signal [as 別名]
# 或者: from signal import CTRL_C_EVENT [as 別名]
def send_sigint(self):
        # `signal.CTRL_C_EVENT` is also sent to the test process itself.
        # See https://docs.python.org/3.6/library/os.html#os.kill
        # So we need to wait the signal and ignore it.
        # We can NOT ignore the signal by modifying the signal handler here.
        # If we temporary ignores the signal, the signal will sent again
        # when the signal handler is restored.
        # If we ignore the signal permanently, we couldn't interrupt the test.
        if os.name == 'nt':
            try:
                os.kill(self.p.pid, signal.CTRL_C_EVENT)
                while True:
                    pass
            except KeyboardInterrupt:
                pass
        else:
            os.kill(self.p.pid, signal.SIGINT) 
開發者ID:chainer,項目名稱:chainer,代碼行數:19,代碼來源:test_multiprocess_iterator.py

示例6: fn_terminate_analysis

# 需要導入模塊: import signal [as 別名]
# 或者: from signal import CTRL_C_EVENT [as 別名]
def fn_terminate_analysis(self):
        """Sends the SIGTERM or ctrl+c event, to terminate child processes.
        
        This function sends the ctrl+c event to the child process if the 
        execution platform is Windows, and the SIGTERM signal on others.
        
        Unfortunately, this has the unintended side-effect of sending ctrl+c 
        to the main process as well, which is handled elsewhere.
        """
        if self.jandroid_process == None:
            return
        # Windows 
        if self.execution_platform == 'windows':
            self.jandroid_process.send_signal(signal.CTRL_C_EVENT)
        # Other platforms.
        else:
            self.jandroid_process.send_signal(signal.SIGTERM)
        self.fn_set_stop_analysis_options()
        self.main_window.setStatusbar('Analysis terminated') 
開發者ID:FSecureLABS,項目名稱:Jandroid,代碼行數:21,代碼來源:jandroid_gui.py

示例7: send_keyboard_interrupt

# 需要導入模塊: import signal [as 別名]
# 或者: from signal import CTRL_C_EVENT [as 別名]
def send_keyboard_interrupt(proc):
    """
    Sends a KeyboardInterrupt to the specified child process.
    """
    if is_windows:
        try:
            # Send KeyboardInterrupt to self, and therefore, to child processes
            try:
                os.kill(0, signal.CTRL_C_EVENT)
            except AttributeError:
                # Python 2.6 and below
                import ctypes
                ctypes.windll.kernel32.GenerateConsoleCtrlEvent(0, 0)
            # Immediately throws KeyboardInterrupt from the simulated CTRL-C
            proc.wait()
        except KeyboardInterrupt:
            # Ignore the simulated CTRL-C
            pass
    else:
        os.kill(proc.pid, signal.SIGINT) 
開發者ID:joeyespo,項目名稱:pytest-watch,代碼行數:22,代碼來源:helpers.py

示例8: _default_handler

# 需要導入模塊: import signal [as 別名]
# 或者: from signal import CTRL_C_EVENT [as 別名]
def _default_handler(signum, *args):
        ''' The default signal handler. Don't register with built-in
        signal.signal! This needs to be used on the subprocess await
        death workaround.
        '''
        # All valid cpython windows signals
        sigs = {
            signal.SIGABRT: SIGABRT,
            # signal.SIGFPE: 'fpe', # Don't catch this
            # signal.SIGSEGV: 'segv', # Don't catch this
            # signal.SIGILL: 'illegal', # Don't catch this
            signal.SIGINT: SIGINT,
            signal.SIGTERM: SIGTERM,
            # Note that signal.CTRL_C_EVENT and signal.CTRL_BREAK_EVENT are
            # converted to SIGINT in _await_signal
        }
        
        try:
            exc = sigs[signum]
        except KeyError:
            exc = DaemonikerSignal
            
        _sketch_raise_in_main(exc) 
開發者ID:Muterra,項目名稱:py_daemoniker,代碼行數:25,代碼來源:_signals_windows.py

示例9: sigint_crossplatform

# 需要導入模塊: import signal [as 別名]
# 或者: from signal import CTRL_C_EVENT [as 別名]
def sigint_crossplatform(process: subprocess.Popen) -> None:
    """
    Send a SIGINT, cross-platform.

    The reason is because the subprocess module
    doesn't have an API to send a SIGINT-like signal
    both on Posix and Windows with a single method.

    However, a subprocess.Popen class has the method
    'send_signal' that gives more flexibility in this terms.

    :param process: the process to send the signal to.
    :return: None
    """
    if os.name == "posix":
        process.send_signal(signal.SIGINT)  # pylint: disable=no-member
    elif os.name == "nt":
        process.send_signal(signal.CTRL_C_EVENT)  # pylint: disable=no-member
    else:
        raise ValueError("Other platforms not supported.") 
開發者ID:fetchai,項目名稱:agents-aea,代碼行數:22,代碼來源:base.py

示例10: reap_process_group

# 需要導入模塊: import signal [as 別名]
# 或者: from signal import CTRL_C_EVENT [as 別名]
def reap_process_group(*args):
    def sigterm_handler(*args):
        # Give a one-second grace period for other processes to clean up.
        time.sleep(SIGTERM_GRACE_PERIOD_SECONDS)
        # SIGKILL the pgroup (including ourselves) as a last-resort.
        if sys.platform == "win32":
            atexit.unregister(sigterm_handler)
            os.kill(0, signal.CTRL_BREAK_EVENT)
        else:
            os.killpg(0, signal.SIGKILL)

    # Set a SIGTERM handler to handle SIGTERMing ourselves with the group.
    if sys.platform == "win32":
        atexit.register(sigterm_handler)
    else:
        signal.signal(signal.SIGTERM, sigterm_handler)

    # Our parent must have died, SIGTERM the group (including ourselves).
    if sys.platform == "win32":
        os.kill(0, signal.CTRL_C_EVENT)
    else:
        os.killpg(0, signal.SIGTERM) 
開發者ID:ray-project,項目名稱:ray,代碼行數:24,代碼來源:ray_process_reaper.py

示例11: test_app

# 需要導入模塊: import signal [as 別名]
# 或者: from signal import CTRL_C_EVENT [as 別名]
def test_app():
    p = subprocess.Popen(
        'declaracad', stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
    for i in range(20):
        time.sleep(1)
        if i == 10:
            if sys.platform == 'win32':
                sig = signal.CTRL_C_EVENT
            else:
                sig = signal.SIGINT
            p.send_signal(sig)
        p.poll()
        if p.returncode is not None:
            break
    stdout, stderr = p.communicate()
    #for line in stdout.split(b"\n"):
    #    print(stdout)
    assert b'Workbench stopped' in stdout 
開發者ID:codelv,項目名稱:declaracad,代碼行數:20,代碼來源:test_1_app.py

示例12: run_app

# 需要導入模塊: import signal [as 別名]
# 或者: from signal import CTRL_C_EVENT [as 別名]
def run_app(please_stop, server_is_ready):
    proc = subprocess.Popen(
        ["python", "active_data\\app.py", "--settings", "tests/config/elasticsearch.json"],
        stdin=subprocess.PIPE,
        stdout=subprocess.PIPE,
        stderr=subprocess.STDOUT,
        bufsize=-1
        #creationflags=CREATE_NEW_PROCESS_GROUP
    )

    while not please_stop:
        line = proc.stdout.readline()
        if not line:
            continue
        if line.find(" * Running on") >= 0:
            server_is_ready.go()
        Log.note("SERVER: {{line}}", {"line": line.strip()})

    proc.send_signal(signal.CTRL_C_EVENT)

# read_alternate_settings 
開發者ID:mozilla,項目名稱:jx-sqlite,代碼行數:23,代碼來源:__init__.py

示例13: send_signal

# 需要導入模塊: import signal [as 別名]
# 或者: from signal import CTRL_C_EVENT [as 別名]
def send_signal(self, sig):
            """Send a signal to the process
            """
            if sig == signal.SIGTERM:
                self.terminate()
            elif sig == signal.CTRL_C_EVENT:
                os.kill(self.pid, signal.CTRL_C_EVENT)
            elif sig == signal.CTRL_BREAK_EVENT:
                os.kill(self.pid, signal.CTRL_BREAK_EVENT)
            else:
                raise ValueError("Unsupported signal: {}".format(sig)) 
開發者ID:war-and-code,項目名稱:jawfish,代碼行數:13,代碼來源:subprocess.py

示例14: handle_interrupt

# 需要導入模塊: import signal [as 別名]
# 或者: from signal import CTRL_C_EVENT [as 別名]
def handle_interrupt(self, process):
        """A three level stop mechanism for children - INT -> TERM -> KILL"""
        msg = "from {} {{}} pid {}".format(os.getpid(), process.pid)
        if self._wait(process, self.suicide_timeout) is None:
            self.info("KeyboardInterrupt", msg.format("SIGINT"))
            process.send_signal(signal.CTRL_C_EVENT if sys.platform == "win32" else signal.SIGINT)
            if self._wait(process, self.interrupt_timeout) is None:
                self.info("KeyboardInterrupt", msg.format("SIGTERM"))
                process.terminate()
                if self._wait(process, self.terminate_timeout) is None:
                    self.info("KeyboardInterrupt", msg.format("SIGKILL"))
                    process.kill()
                    process.communicate() 
開發者ID:tox-dev,項目名稱:tox,代碼行數:15,代碼來源:action.py

示例15: onClose

# 需要導入模塊: import signal [as 別名]
# 或者: from signal import CTRL_C_EVENT [as 別名]
def onClose(self, wasClean, code, reason):
        """Called when browser tab is closed."""
        global websocketserving

        self.connection = None

        # We r done serving, let everyone else know...
        websocketserving = False

        # The cleanest way to get a fresh browser tab going in spyder
        # is to force vpython to be reimported each time the code is run.
        #
        # Even though this code is repeated in stop_server below we also
        # need it here because in spyder the script may have stopped on its
        # own ( because it has no infinite loop in it ) so the only signal
        # that the tab has been closed comes via the websocket.
        if _in_spyder:
            _undo_vpython_import_in_spyder()

        # We want to exit, but the main thread is running.
        # Only the main thread can properly call sys.exit, so have a signal
        # handler call it on the main thread's behalf.
        if platform.system() == 'Windows':
            if threading.main_thread().is_alive() and not _in_spyder:
                # On windows, if we get here then this signal won't be caught
                # by our signal handler. Just call it ourselves.
                os.kill(os.getpid(), signal.CTRL_C_EVENT)
            else:
                stop_server()
        else:
            os.kill(os.getpid(), signal.SIGINT) 
開發者ID:vpython,項目名稱:vpython-jupyter,代碼行數:33,代碼來源:no_notebook.py


注:本文中的signal.CTRL_C_EVENT屬性示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。