等待超时实现简单方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xh_xinhua/article/details/73350917
#include <stdio.h>
#include <sys/types.h> 
#include <sys/stat.h>
#include <fcntl.h>

#define MAX_PATH                2048
#define TMP_RUN_PATH                "/tmp/run"
#define WAIT_TIMEOUT_MAX            10000U  //10 seconds
#define TEST_NAME                   "test_name"//parameter name
#define RET_FALSE                   0
#define RET_TRUE                    1
bool i_test_wait(const SVPChar* name, SVPUint32 timeout)
{
    bool service_ready = RET_FALSE;
    char service_registry[MAX_PATH] = {0};
    snprintf(service_registry, MAX_PATH, "%s/service/registry/%s", TMP_RUN_PATH, name);

    if (timeout > WAIT_TIMEOUT_MAX)
        timeout = WAIT_TIMEOUT_MAX;

    int try_time = timeout / 50;

    while (try_time--)
    {
        if (SVPFile::FileExist(service_registry) == RET_FALSE)
        {
            sleep(50);
            continue;
        }

        service_ready = RET_TRUE;
        break;
    }
    return service_ready;
}
    /************************************
    *   源码:access(pFilePath, F_OK);
    *   int m_hFile = -1;
    *   m_hFile = open(pFilePath ,O_CREAT);
    *   close(m_hFile);
    *   remove(filename);
    *************************************/

猜你喜欢

转载自blog.csdn.net/xh_xinhua/article/details/73350917