我正在PySide2上编写我的桌面应用程序(这并不重要),用于控制Django项目(在按钮上运行服务器和停止服务器)。我意识到只有启动服务器,但我无法添加停止服务器,因为停止服务器是单击cmd中的按钮"CTRL + C"
,现在我不知道如何将按钮的单击解释为代码或此问题的任何答案。
以下是“运行服务器”的示例,我需要一些有关“停止服务器”的帮助
os.chdir(ui.lineEdit.text()) # Change directory
os.system("python manage.py runserver") # Run server in this
答案 0 :(得分:4)
Ctrl + C 是终端解释的内容。它将向正在运行的进程发送SIGINT
信号。因此,终止应用程序的不是 Ctrl + C 本身。
您可以执行相同的操作,例如,首先使用Popen(..)
打开一个进程,然后最终发送一个信号:
from subprocess import Popen
from signal import SIGINT
# start the process
p = Popen(['python', 'manage.py', 'runserver'])
# now stop the process
p.send_signal(SIGINT)
p.wait()
答案 1 :(得分:1)
这是您可以从Python的system
调用的另一种方法...为别名创建别名以杀死当前用户的现有runserver
进程(以防它们卡住)也很方便:< / p>
# Kill any Django runserver instances for the current user
alias kill-runserver="ps -eaf | grep 'manage.py runserver' | grep "'$USER'" | grep -v grep | awk '{print "'$2'"}' | xargs kill -9"
创建别名后,只需运行kill-runserver
。如果您想更安全一点,请从-9
命令中删除kill
。