可以用死循环的方式做定时任务吗?

发布于 2022-09-05 00:33:10 字数 927 浏览 21 评论 0

用这种方式做定时任务可以吗,就是一个死循环:

package main

import "time"
import "os/exec"

func main() {
    for i := 0; i < 10; i = 1 {
        a := time.Now().Hour()
        if a >= 0 && a <= 1 {
            exec.Command("shutdown", "-s", "-t", "0").Start()
        } else {
            time.Sleep(300 * time.Second)
        }
    }
}

或者这样,也是一个死循环

import os
import time
time_h=int(time.strftime("%H"))

for i in range(10):
    if (time_h>=0 and time_h<=1):
        os.system("shutdown -s -t 0")
    else:
        time.sleep(300)
        i=1

这种是一个递归函数,会不会爆栈

import time
import os
time_h=int(time.strftime("%H"))
def shutdown():
    if (time_h<=1 and time_h>=0):
        os.system("shutdown -s -t 0")
    else:
        time.sleep(300)
        shutdown()
shutdown()

一般执行定时任务都用什么方法,windows的可以添加计划任务,Unix有Cron,但是自己实现该怎么做?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

饮湿 2022-09-12 00:33:10

这样写到不是不可以

可以用定时器,定时器每隔一段时间查询系统时间,判断是否该执行相应的任务。

执手闯天涯 2022-09-12 00:33:10

建议使用setInterval函数,自己写的函数没有经过严格测试,对于上线项目可能存在bug,但是官方提供函数毕竟是经过严格测试的,安全性比较好。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文