如何让Python脚本(作为服务安装)在注销后继续运行?

3 投票
1 回答
764 浏览
提问于 2025-04-16 04:32

我按照这个回答里的说明,写了一个可以作为服务运行的Python脚本。我把我的循环代码放在了def main()这个地方。

我用python my_script.py install安装了这个服务。在Windows XP中,我可以通过services.msc来启动和停止这个服务。

这个程序是用来记录日志的,目的是在Windows运行的时候一直写日志。它不应该在乎有没有人登录或登出。我的问题是,当我登出时,这个服务会停止。我该怎么做才能让它在登出后继续运行呢?

1 个回答

2

当用户关闭控制台、注销或关机时,系统会生成一些信号,比如CTRL_CLOSE_EVENT、CTRL_LOGOFF_EVENT和CTRL_SHUTDOWN_EVENT。这些信号的作用是给程序一个机会,让它在结束之前进行一些清理工作。为了确保你的服务能够从这些操作中分离出来,你需要使用控制处理程序来进行设置:

  win32api.SetConsoleCtrlHandler(lambda x: True, True)  

你可以查看这个链接:http://msdn.microsoft.com/en-us/library/ms685049(v=VS.85).aspx

我刚刚发现有一个教程非常适合你,能很好地说明这个问题。

撰写回答