Почему время, полученное в Ubuntu, прыгает за секунды?

Справочная информация: Я хочу использовать системные функции, чтобы получить UTC для добавления метки времени. Функция s getdayoftime() может помочь получить время эпохи (начиная с 1970-1-1), а другая функция localtime_r может помочь изменить время эпохи на UTC. Я пишу простую программу для проверки стабильности времени получения. Но результаты появляются за секунды прыжков.

Окружающая среда: Ubuntu 16.04 установлен на Vmware Workstation 15.1 в Win 10 (1903). Программа работает на C ++.

Проблема: Я использую matlab для анализа разницы во времени, и результат ниже (я не уверен, была ли здесь успешно загружена картинка)

введите описание изображения здесь

Коды: Код очень прост.

#include <sys/time.h>
#include <iostream>
#include <time.h>
#include <fstream>
#include <unistd.h>

using namespace std;

int main(int argc, char **argv)
{
    int cnt=0;

    ofstream fp("time.txt");

    //For getting the UTC
    struct timeval epochTime;
    struct tm timenow;

    while(1)
    {
        //Get the UTC
        gettimeofday(&epochTime, NULL); 
        localtime_r(&epochTime.tv_sec, &timenow);

        //Write time to txt
        fp<<cnt<<","<<timenow.tm_year + 1900<<"-"<<timenow.tm_mon + 1<<"-"<<timenow.tm_mday<<
            " "<<timenow.tm_hour<<":"<<timenow.tm_min<<":"<<timenow.tm_sec<<"."<<epochTime.tv_usec<<endl;

        //sleep for test
        usleep(10000);

        if(cnt > 1000)
        {
            return 1;
        }
        cout << cnt << endl;
        cnt +=1;

    }
    return 1;
}

PS:

0
задан 12 September 2019 в 06:19

1 ответ

... если я получаю Ваш код, похоже, что у Вас есть файл, в котором Вы пишете что-то, и Вы вращаетесь в цикле, и Вы берете сон usleep (10000). Именно это Вы делаете со своим кодом, но это могло бы посмотреть, или Вы ожидаете что-то еще...

0
ответ дан 23 October 2019 в 02:21

Другие вопросы по тегам:

Похожие вопросы: