python实现在windows服务中新建进程的方法


Posted in Python onJune 30, 2015

本文实例讲述了python实现在windows服务中新建进程的方法。分享给大家供大家参考。具体实现方法如下:

需要安装的软件:python和pywin32,我这里装的分别是python-2.6.amd64、pywin32-217.win-amd64-py2.6

文件名:dma_ws.py

#!python
import win32serviceutil 
import win32service 
import win32event
import os 
from subprocess import Popen, PIPE
import json
import signal
run_proc = None
class DMA_WS(win32serviceutil.ServiceFramework): 
 _svc_name_ = "DMA_WS"
 _svc_display_name_ = "DMA_WS"
 def __init__(self, args): 
  win32serviceutil.ServiceFramework.__init__(self, args) 
  self.hWaitStop = win32event.CreateEvent(None, 0, 0, None) 
 def SvcStop(self):   
  self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING) 
  win32event.SetEvent(self.hWaitStop) 
 def SvcDoRun(self):
  f = file('C:/DXMonitorSystem/dma.conf')
  host = json.load(f)
  f.close()
  dxsrv = os.path.join(host['app_path'], 'DXHttpServer.py')
  run_proc = Popen([host['ironpython'], dxsrv],
      stdin=PIPE, stdout=PIPE, stderr=PIPE, shell=False,
      cwd=host['app_path'])
      #这里新建进程,注意cwd参数必不可少且要是绝对路径
  #res, err = run_proc.communicate()
  #这个函数内的上面部分都是逻辑处理的部分,可以根据自己的需求订制,但下面这行代码任何服务都需要
  win32event.WaitForSingleObject(self.hWaitStop, win32event.INFINITE) 
  run_proc.kill() # 用于关闭服务所创建的子进程
  #os.kill(run_proc.pid, signal.SIGTERM)
if __name__=='__main__':
 win32serviceutil.HandleCommandLine(DMA_WS)

使用方法:

创建服务:Python dma_ws.py install

开始服务:python dma_ws.py start

停止服务:python dma_ws.py stop

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
一个简单的python程序实例(通讯录)
Nov 29 Python
Python中文编码那些事
Jun 25 Python
python在windows下实现ping操作并接收返回信息的方法
Mar 20 Python
利用python画一颗心的方法示例
Jan 31 Python
Python OpenCV读取png图像转成jpg图像存储的方法
Oct 28 Python
django如何实现视图重定向
Jul 24 Python
Python爬取豆瓣视频信息代码实例
Nov 16 Python
pytorch中tensor.expand()和tensor.expand_as()函数详解
Dec 27 Python
pytorch GAN伪造手写体mnist数据集方式
Jan 10 Python
如何基于Python pygame实现动画跑马灯
Nov 18 Python
python之pygame模块实现飞机大战完整代码
Nov 29 Python
Python列表删除重复元素与图像相似度判断及删除实例代码
May 07 Python
python实现线程池的方法
Jun 30 #Python
python实现的简单FTP上传下载文件实例
Jun 30 #Python
编写Python CGI脚本的教程
Jun 29 #Python
Python访问纯真IP数据库脚本分享
Jun 29 #Python
Python实现把数字转换成中文
Jun 29 #Python
Python中if __name__ == '__main__'作用解析
Jun 29 #Python
django接入新浪微博OAuth的方法
Jun 29 #Python
You might like
php设计模式 Template (模板模式)
2011/06/26 PHP
PHP函数之error_reporting(E_ALL ^ E_NOTICE)详细说明
2011/07/01 PHP
php图片上传存储源码并且可以预览
2011/08/26 PHP
PHP exif扩展方法开启详解
2014/07/28 PHP
PHP的运行机制与原理(底层)
2015/11/16 PHP
php生成图片验证码的方法
2016/04/15 PHP
PHP5.5安装PHPRedis扩展及连接测试方法
2017/01/22 PHP
PHP截取发动短信内容的方法
2017/07/04 PHP
利用JS实现浏览器的title闪烁
2013/07/08 Javascript
Extjs4实现两个GridPanel之间数据拖拽功能具体方法
2013/11/21 Javascript
JavaScript中的getTimezoneOffset()方法使用详解
2015/06/10 Javascript
浅谈js多维数组和hash数组定义和使用
2016/07/27 Javascript
jQuery实现的文字逐行向上间歇滚动效果示例
2017/09/06 jQuery
Node.js成为Web应用开发最佳选择的原因
2018/02/05 Javascript
vue中设置height:100%无效的问题及解决方法
2018/07/27 Javascript
jQuery添加新内容的四个常用方法分析【append,prepend,after,before】
2019/03/19 jQuery
浅谈JS的原型和继承
2019/05/08 Javascript
vue从一个页面跳转到另一个页面并携带参数的解决方法
2019/08/12 Javascript
Vue父子之间值传递的实例教程
2020/07/02 Javascript
[14:03]2017DOTA2亚洲邀请赛开幕式:12神兵演绎水墨中华
2017/04/01 DOTA
[49:35]LGD vs OG 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
Python计算两个日期相差天数的方法示例
2017/05/23 Python
python实现12306抢票及自动邮件发送提醒付款功能
2018/03/08 Python
Python使用jsonpath-rw模块处理Json对象操作示例
2018/07/31 Python
numpy下的flatten()函数用法详解
2019/05/27 Python
Python:slice与indices的用法
2019/11/25 Python
python如何利用Mitmproxy抓包
2020/10/10 Python
关于HTML5+ API plusready的兼容问题
2020/11/20 HTML / CSS
三个Unix的命令面试题
2015/04/12 面试题
实习期自我鉴定
2013/10/11 职场文书
赞美老师的演讲稿
2014/05/22 职场文书
服装仓管员岗位职责
2014/06/17 职场文书
社保委托书怎么写
2014/08/02 职场文书
2015年优质护理服务工作总结
2015/04/08 职场文书
MySQL的索引你了解吗
2022/03/13 MySQL
javascript进阶篇深拷贝实现的四种方式
2022/07/07 Javascript