Время печати начиная с эпохи в наносекундах
Таким образом, я знаю, как печатать время с эпохи в секундах и, очевидно, даже в миллисекундах, но когда я пробую наносекунды, я продолжаю получать поддельный вывод целого числа, которое слишком мало, и оно иногда печатает числа меньше, чем последний прогон.
#include <stdio.h>
#include <time.h>
int main (void)
{
long int ns;
struct timespec spec;
clock_gettime(CLOCK_REALTIME, &spec);
ns = spec.tv_nsec;;
printf("Current time: %ld nonoseconds since the Epochn", ns);
return 0;
}
Например, с пробегом от этого я получил 35071471 наносекунд с момента epoch.
Была бы признательна любая помощь в правильном отображении этого.
1 ответ:
Наносекундная часть - это всего лишь "дробная" часть, вы также должны добавить секунды.
// otherwise gcc with option -std=c11 complaints #define _POSIX_C_SOURCE 199309L #include <stdio.h> #include <time.h> #include <stdint.h> #include <inttypes.h> #define BILLION 1000000000L int main(void) { long int ns; uint64_t all; time_t sec; struct timespec spec; clock_gettime(CLOCK_REALTIME, &spec); sec = spec.tv_sec; ns = spec.tv_nsec; all = (uint64_t) sec * BILLION + (uint64_t) ns; printf("Current time: %" PRIu64 " nanoseconds since the Epoch\n", all); return 0; }