Справочная информация: Я хочу использовать системные функции, чтобы получить 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:
... если я получаю Ваш код, похоже, что у Вас есть файл, в котором Вы пишете что-то, и Вы вращаетесь в цикле, и Вы берете сон usleep (10000). Именно это Вы делаете со своим кодом, но это могло бы посмотреть, или Вы ожидаете что-то еще...