在特定时间后执行代码

时间:2013-11-15 01:55:15

标签: c visual-studio-2010 time monitoring execution

我制作了一个简单的网络监控系统,我希望它每隔一小时运行一次,以便持续跟踪客户端系统。任何人都可以告诉我如何让我的代码每隔一小时后执行一次。

编辑:

我的平台是windows-7,我正在使用Visual Studio 2010。

3 个答案:

答案 0 :(得分:1)

在Linux上,尝试cron个工作。这会安排程序定期运行。

http://www.unixgeeks.org/security/newbie/unix/cron-1.html

答案 1 :(得分:1)

Windows任务计划程序的API文档为here。它不是最简单的API,命令行工具schtasks.exe可能是一个更简单的解决方案。

答案 2 :(得分:0)

查看Waitable Timer ObjectsUsing Waitable Timer Objects,深入了解合适的计时器API。 SetWaitableTimer function允许将句点设置为3,600,000 ms,表示所需的 1小时期间。

示例:

#include <windows.h>
#include <stdio.h>

int main()
{
    HANDLE hTimer = NULL;

    LARGE_INTEGER liDueTime;
    liDueTime.QuadPart = -100000000LL; 
    // due time for the timer, negative means relative, in 100 ns units. 
    // This value will cause the timer to fire 10 seconds after setting for the first time.

    LONG lPeriod = 3600000L;
    // one hour period

    // Create an unnamed waitable timer.
    hTimer = CreateWaitableTimer(NULL, TRUE, NULL);
    if (NULL == hTimer)
    {
        printf("CreateWaitableTimer failed, error=%d\n", GetLastError());
        return 1;
    }

    printf("Waiting for 10 seconds...\n"); // as described with liDueTime.QuadPart


    if (!SetWaitableTimer(hTimer, &liDueTime, lPeriod , NULL, NULL, 0))
    {
        printf("SetWaitableTimer failed, error=%d\n", GetLastError());
        return 2;
    }

    // and wait for the periodic timer event...
    while (WaitForSingleObject(hTimer, INFINITE) == WAIT_OBJECT_0) {
        printf("Timer was signaled.\n");
        // do what you want to do every hour here...
    }
    printf("WaitForSingleObject failed, error=%d\n", GetLastError());
    return 3;
}