问题标签 [timespec]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
111 浏览

c - C中long的减法会失去精度?

我确信答案很简单,但我不太明白。我正在尝试struct timespec使用以下代码计算两者之间的增量:

但是,输出总是类似于Elapsed time: 0.300876000 seconds.这似乎表明我正在丢失纳秒的最后三位数字(因为这些数字不应该总是为零)。有人能指出是什么原因造成的吗?

0 投票
2 回答
14511 浏览

c - 使用 struct timespec 检索 Linux 时间

有人可以建议我如何使用

结构时间规范

类型?它只是给了我自 Epoch 以来的时间。我可以使用这种数据类型获得实际的 Linux 时间吗?

简要背景:我正在嵌入式设备上编写一个记录器实用程序,时间戳分辨率以毫秒/微秒为单位。源添加了目标组件使用的时间戳。

目标组件正在文件/控制台上打印此日志时间戳。但是打印出来的日期是自 Epoch 以来的时间,而不是实际的 Linux 日期。

打印数据为:1970-01-01 23:30:07.586864475

然而,Linux 日期不同,如下所示:

root@imh:# 日期

2017 年 11 月 14 日星期二 11:34:12 UTC

它不是格式问题。它是关于获取当前的 Linux 时间(以纳秒为单位)。

0 投票
1 回答
1165 浏览

c++ - 如何正确地将 timespec 转换为 timeval?

我有一个struct timespec对象需要转换为struct timeval用于lutimes(...).

我尝试了以下操作,但lutimes()抱怨。

现在EINVALfromlutimes表示 usec 组件在 之外0 <= tv_usec < 1000000,这意味着转换 fromtimespec出错了。[资源]

我如何正确转换timespectimeval


使用该命令进行更彻底的调试会touch显示timespec包含tv_sec = 0and tv_nsec > 1000000000,当没有指定特定日期并且应该使用当前时间时。

为什么是这样?处理这个问题的正确方法是什么?

0 投票
1 回答
327 浏览

c - 大尺寸输入数组的 C 程序崩溃(分段错误)。如何在不使用静态/全局/malloc 的情况下防止它?

以下程序是使用heapsort对大量随机数进行排序。程序的输出是递归heapSort函数的总执行时间(以微秒为单位)。输入数组的大小由SIZE宏定义。

该程序适用于高达 100 万(1000000)的SIZE 。但是当我尝试执行SIZE 1000 万(10000000)的程序时,程序会产生分段错误(核心转储)。

注意:我已经尝试在 Linux (128 MB) 上使用ulimit -s命令增加堆栈的软限制和硬限制。SEGFAULT 仍然存在。

请建议我对所需的代码进行任何更改或任何可以克服现有 SEGFAULT 弊端的方法,而无需动态声明数组或将数组声明为全局/静态。/* 实现堆排序算法的程序 */

0 投票
0 回答
984 浏览

c++ - sem_timedwait 导致“futex 工具返回了意外的错误代码”

这段代码有什么问题?当 sem 对象发布时,它很好。但是,一旦需要等待超时,我就会收到“futex 工具返回了意外的错误代码”。

0 投票
2 回答
1438 浏览

c - timespec_get 的源代码在哪里?

C11标准提供timespec_get功能。如果我在 cppreference 或我的计算机上运行示例代码,它可以工作:

但是,如果我在这里查看 glibc 的来源,代码如下:

哪个......不应该工作......

这就引出了一个问题:timespec_get实际调用的源代码在哪里?

0 投票
2 回答
2630 浏览

c - 为什么我的 Mac 上的任何 C 编译器都没有定义 timespec_get?

根据 C11 标准 (7.27.2.5),timespec_gettime.h. 我试过几个编译器,包括clang和几个版本的gcc,应该支持C11,但是这个功能总是缺失。宏TIME_UTC也不见了。

这是一个测试文件mytime.c

以及使用 Clang 的输出:

我注释掉了这timespec_get条线,以确保我使用的是 C11,而且我是。

对于 gcc 版本 4.8、5 和 6,我得到基本相同的结果。

我使用的是 Mac,OS 10.11.6。

0 投票
1 回答
732 浏览

c - 将自纪元以来的本地时间(以秒为单位)转换为 UTC

在我的系统中,我有一台 PC(Linux,以防万一),它将 RTC 时间保持在 UTC,使我的本地时区特定。在 PC 代码中,我得到 UTC 时间为自纪元以来的秒数

我还有一个第 3 方网络设备,它提供的时间也是从纪元开始的秒数,但它使用本地时间而不是 UTC 时间来提供。这是一个问题,因为当我在交错日志中打印两个时间戳以及来自 PC 和此设备的时间戳时,即使两个时钟显示相同的本地时间,时间戳也会关闭。

假设 PC 和此设备之间的时区设置(UTC 偏移和夏令时规范)相同。我将如何获取设备提供的纪元以来的秒数(本地时间)并将其转换为 UTC 纪元以来的秒数?换句话说,当该数字在本地时间时,将 PC 时区设置应用于自纪元以来的秒数的编程(C 语言)方式是什么?

这是我尝试将第 3 方设备基于本地时间的秒数自纪元以来转换为基于 UTC 的自纪元以来的秒数。

以上不起作用。它打印

如您所见,转换后的设备时间戳不等于 PC 时间戳。这应该怎么做?

0 投票
3 回答
304 浏览

c - 在 Linux 上使用“timespec_get()”返回的“tv_nsec”纳秒组件作为 C 中的随机数生成器的可行性?

使用以下简单的代码片段:

我得到这样的输出:

58, 1, 74, 49, 5, 59, 89, 20, 52, 86, 17, 48, 79, 10, 41, 73, 3, 40, 72, 3, 36, 67, 98, 30, 61, 92, 24, 55, 86, 17, 49, 82, 14, 45, 76, 7, 40, 72, 3, 36, 71, 2, 35, 66, 97, 28, 66, 97, 28, 60, 90, 22, 52, 83, 15, 46, 77, 7, 41, 72, 3, 36, 67, 0, 44, 17, 82, 13, 45, 77, 8, 59, 90, 22, 54, 85, 17, 48, 80, 12, 43, 75, 6, 57, 89, 20, 52, 84, 15, 47, 79, 14, 50, 82, 16, 47, 79, 11, 43, 74,

我没有研究数字的统计分布,我的搜索结果是空白的,但乍一看,输出确实类似于rand()or的输出random()。有没有人研究过这个或能够发表意见 - 可以timespec_get()用作随机数生成器?会不会是伪随机的?为什么?

0 投票
1 回答
205 浏览

c - 为什么 time() 报告的时间有时比 C 代码中 timespec_get() 的秒组件慢 1 秒?

以下代码片段:

产生这个输出:

cTime为什么和之间的差异ts.tv_sec?请注意,如果将条件更改为 ,则不会出现此问题ts.tv_nsec >= 3000000。该问题依赖于小于 3000000 的纳秒。