pyqt使用process和pipe打开nginx,但是nginx是长期运行的 如何解决,我就是想实现一点击按钮运行nginx,再点击就停止
设计一个PyQt界面,用QProcess类来启动和管理Nginx进程:
import sysfrom PyQt5.QtWidgets import QApplication, QWidget, QPushButtonfrom PyQt5.QtCore import QProcessclass MyApp(QWidget): def __init__(self): super().__init__() self.initUI() self.process = QProcess(self) self.nginx_running = False def initUI(self): self.start_stop_btn = QPushButton('启动Nginx', self) self.start_stop_btn.clicked.connect(self.toggle_nginx) self.start_stop_btn.resize(self.start_stop_btn.sizeHint()) self.setGeometry(300, 300, 300, 200) self.setWindowTitle('Nginx Controller') self.show() def toggle_nginx(self): if self.nginx_running: self.process.terminate() self.nginx_running = False self.start_stop_btn.setText('启动Nginx') else: self.process.start('path_to_nginx', ['-c', 'path_to_nginx_conf']) self.nginx_running = True self.start_stop_btn.setText('停止Nginx')if __name__ == '__main__': app = QApplication(sys.argv) ex = MyApp() sys.exit(app.exec_())
path_to_nginx和path_to_nginx_conf换成你的Nginx的可执行文件路径和配置文件路径。
或者用楼上说的pid:
import sysimport osimport signalfrom PyQt5.QtWidgets import QApplication, QWidget, QPushButtonclass MyApp(QWidget): def __init__(self): super().__init__() self.initUI() self.pid = None def initUI(self): self.start_stop_btn = QPushButton('启动Nginx', self) self.start_stop_btn.clicked.connect(self.toggle_nginx) self.start_stop_btn.resize(self.start_stop_btn.sizeHint()) self.setGeometry(300, 300, 300, 200) self.setWindowTitle('Nginx Controller') self.show() def toggle_nginx(self): if self.pid: os.kill(self.pid, signal.SIGTERM) # 使用SIGTERM信号结束进程 self.pid = None self.start_stop_btn.setText('启动Nginx') else: self.pid = os.spawnl(os.P_NOWAIT, 'path_to_nginx', 'nginx', '-c', 'path_to_nginx_conf') self.start_stop_btn.setText('停止Nginx')if __name__ == '__main__': app = QApplication(sys.argv) ex = MyApp() sys.exit(app.exec_())
需求:实现一个功能,有多个span标签,内容为用户名,点击span标签,使其以tag的形式出现在一个contentEditable为true的div中,并且tag有背景色和4px的padding,tag不可编辑,当鼠标在div有焦点,则在当前焦点处插入tag,否则将tag加在最后面。 各位有什么实现方案吗 技术:在vue项目中。不要库。原生js实现
代码如上,右下角超出部分被隐藏了,如何才能不隐藏?或其他实现方式?
本文向大家介绍PowerShell函数实现类似重载功能实例,包括了PowerShell函数实现类似重载功能实例的使用技巧和注意事项,需要的朋友参考一下 本文介绍PowerShell自定义函数是否支持重载,如果支持,如何重载?如果不支持,如何实现与重载相似的效果? 郑重声明:PowerShell自定义函数不支持重载!也就是说,你不能定义两个同名的PowerShell函数,不管参数个数、顺序、类型是否
本文向大家介绍Android实现类似3D Touch菜单功能,包括了Android实现类似3D Touch菜单功能的使用技巧和注意事项,需要的朋友参考一下 前言 在开发中,我们经常遇到需要菜单功能的实现,我们经常会参考其他人的优秀设计。比如3D Touch菜单,作为iphone6和iphone6s上引人注目的新功能。现在,我们希望尽力来模仿这种菜单设计,尽力,因为系统的差异,会导致很多东西实现起来
我正在使用Spring Data JPA将一条记录保存到我的数据库中。下面是我正在使用的方法: 我想修改这个,所以它将保存或更新。这是我目前所掌握的: 我有几个问题- #1这是不是很糟糕的做法(删除然后重新插入)? #2如果我使用hibernate实现回购,那么hibernate saveOrUpdate(..)在引擎盖下做同样的事? #3您是否知道如何使用简单的Spring数据JPA来实现这一点
本文向大家介绍SQLite 实现if not exist 类似功能的操作,包括了SQLite 实现if not exist 类似功能的操作的使用技巧和注意事项,需要的朋友参考一下 需要实现: 只能用: 因为 SQLite 中不支持SP 补充:sqlite3中NOT IN 不好用的问题 在用sqlite3熟悉SQL的时候遇到了一个百思不得其解的问题,也没有在google上找到答案。虽然最后用“迂回”