Python 3 通过发送 Ctrl C 停止子进程

作者:编程家 分类: python 时间:2025-08-09

如何使用 Python 3 通过发送 Ctrl C 来停止子进程

在编写 Python 程序时,有时候我们需要启动并控制子进程。但是,当我们想要停止子进程时,可能会遇到一些困难。幸运的是,Python 3 提供了一种简单的方法来发送 Ctrl C 信号来停止子进程。本文将介绍如何使用 Python 3 来实现这一功能,并提供一个案例代码供参考。

## 使用 signal 模块来发送信号

Python 3 中的 signal 模块提供了发送和接收信号的功能。我们可以使用它来发送 Ctrl C 信号给指定的进程。首先,我们需要导入 signal 模块:

python

import signal

然后,我们可以定义一个函数来发送信号给子进程。下面是一个示例函数,它将发送 Ctrl C 信号给指定的进程 ID:

python

def send_ctrl_c(pid):

os.kill(pid, signal.SIGINT)

在这个函数中,我们使用 `os.kill()` 函数来发送信号给指定的进程。`signal.SIGINT` 表示 Ctrl C 信号。

## 示例代码

下面是一个使用 Python 3 发送 Ctrl C 信号来停止子进程的示例代码。在这个示例中,我们使用 `subprocess` 模块来启动一个子进程,并使用 `Popen` 类来控制子进程。然后,我们定义了一个函数来发送 Ctrl C 信号给子进程。

python

import os

import signal

import subprocess

def send_ctrl_c(pid):

os.kill(pid, signal.SIGINT)

def main():

# 启动子进程

process = subprocess.Popen(['python', 'child_process.py'])

try:

# 在这里可以进行其他操作

# ...

# 发送 Ctrl C 信号给子进程

send_ctrl_c(process.pid)

# 等待子进程结束

process.wait()

except KeyboardInterrupt:

# 用户按下 Ctrl C

# 发送 Ctrl C 信号给子进程

send_ctrl_c(process.pid)

# 等待子进程结束

process.wait()

if __name__ == '__main__':

main()

在这个示例中,我们使用 `subprocess.Popen()` 函数来启动一个子进程。然后,我们在 `try` 块中发送 Ctrl C 信号给子进程,并在 `except KeyboardInterrupt` 块中再次发送信号。最后,我们使用 `process.wait()` 函数来等待子进程结束。

##

在本文中,我们介绍了如何使用 Python 3 通过发送 Ctrl C 信号来停止子进程。我们使用 `signal` 模块来发送信号,并提供了一个示例代码供参考。希望这篇文章对你有所帮助!