0

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

编辑:

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

4

3 回答 3

1

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

于 2013-11-15T02:52:33.980 回答
1

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

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

于 2013-11-15T02:10:23.370 回答
0

查看可等待计时器对象使用可等待计时器对象以深入了解合适的计时器 API。SetWaitableTimer 函数允许将周期设置为 3,600,000 毫秒,这表示所需的一小时周期。

例子:

#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;
}
于 2013-11-15T11:13:12.303 回答