- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我希望将 timeval 字段附加到我的自定义数据包 header 中。面临类型转换的问题。
标题中我的自定义字段
struct pkthdr {
uint64_t sec;
uint64_t usec;
}
Linux timeval 结构体
struct timeval {
long tv_sec; /* seconds */
long tv_usec; /* and microseconds */
}
初始化
struct pkthdr *hdr;
struct timeval *tm;
gettimeofday(&tm, 0);
hdr->sec = htonl(tm->tv_sec);
hdr->usec = htonl(tm->tv_usec);
以下行导致段错误
hdr->sec = htonl(tm->tv_sec);
hdr->usec = htonl(tm->tv_usec);
最佳答案
您已经创建了指向 struct timeval
和 struct pkthdr
的指针,但实际上尚未分配任何要指向的内存,因此当您尝试执行以下操作时,您正在调用未定义的行为为 hdr->sec
和 hdr->usec
您还向 gettimeofday
传递了错误的类型,因为您传递的是 struct timeval **
而不是 struct timeval
。
尝试创建实际的结构而不是指向它们的指针:
struct pkthdr hdr;
struct timeval tm;
gettimeofday(&tm, NULL);
hdr.sec = htonl(tm.tv_sec);
hdr.usec = htonl(tm.tv_usec);
检查以确保 hdr.sec
和 hdr.usec
中的数据确实是您想要的,因为这可能不正确。我对使用 htonl
有一些保留,因为它处理 32 位数据,而您的预期结果是 64 位。
关于c - timeval 到 uint64_t 网络位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56992597/
我如何知道从 1970 年 1 月 1 日 00:00:00 到现在使用 timeval 之间的秒数和微秒数?谢谢。 struct timeval { long tv_sec; /*seconds
我想将 timeval 结构从秒转换为纳秒,实现此目的的最佳算法是什么? 最佳答案 我建议这样做: uint64_t nanosec(struct timeval t) { /* Calculate
我在将 time_t 转换为 struct timeval 时遇到问题。我需要从 time_t 值填充 tv_usec 和 tv_sec 值。 为了填充tv_sec和tv_usec,我们需要调用get
我正在尝试打印 struct timeval 变量中的值,如下所示: int main() { struct timeval *cur; do_gettimeofday(cur)
我正在尝试将这两个组件从时间结构中拉出并将它们放入字符串中。 我运气不太好。我尝试先将其转换为长整数,然后再转换为字符串。我需要最有效的方法来执行此操作。 有什么想法吗?我不想首先转换为另一个数据结构
我需要使用两个 integer 参数 p1 和 p2 来表示 timeval 结构。我已将 tv_sec 复制到 p1 并将 tv_usec 复制到 p2。在 32 位 (centos) 中 size
通过下面的代码,我可以获得以毫秒为单位的当前时间。现在我想将毫秒添加到系统时间。有什么提示吗? #include #include int main (int argc, char** argv)
如何将 timeval 转换为 time_t?我正在尝试转换:umtp->ut_tv 到 time_t 这样我就可以使用 difftime(a,b)。 struct { int32_t tv_s
struct timeval 和 struct timespec 除了精度不同之外还有什么区别?如果我需要的精度低于 µs(例如,毫秒),我为什么要使用一个而不是另一个? 在我的编译器上(ARM 的
我希望将 timeval 字段附加到我的自定义数据包 header 中。面临类型转换的问题。 标题中我的自定义字段 struct pkthdr { uint64_t sec; uint
我试图查看选择函数监视文件所花费的时间,但是当我尝试打印它时,我得到一个很长的数字。这是代码: struct timeval to; to.tv_usec=25; nfds=select(maxfds
我正在使用 timeval 结构来获取当前系统时间。通常如果我这样声明: timeval curtime; 它正在工作。但是我看到一些代码,人们将其声明为: struct timeval curtim
我有一个 struct timespec我需要转换为 struct timeval 的对象用于 lutimes(...) . 我尝试了以下操作,但是 lutimes()提示。 const struct
我在下面有一个片段 - 我已经以多种方式调整了我的 tv_usec,但是我一直坐在 select() 循环中几乎整整 10 秒,无论tv_usec 的设置。 char buffer[512];
我正在使用 timersub(struct timeval *a, struct timeval *b, struct timeval *res) 来按时进行操作。而我要做的是,用一个较高的值减去一个
我搜索了一些问题 using time.h获得random种子 initialization .特别是在我的例子中,我想放置 time在主函数之外。 根据评论我做了一些修改。在 include as
我在这个程序中有一个错误,我不断地回到这两个函数,但它们对我来说是正确的。这里有什么问题吗? long visual_time_get_msec(VisTime *time_) { visua
我正在测试是否可以使用 gettimeofday() 来衡量一段代码的性能。 #include #include #include int main() { struct timeval *
我正在从 Linux 内核读取(触摸)事件。我想记录这些事件的时间,但我不知道这些事件是作为 timespec 还是 timeval 传递的。谁能指出我正确的方向? 示例代码(从缓冲区读取事件后) s
看完this article关于运行时间,我写了一个简单的代码来计算一个循环的执行时间: #include #include int main (int argc, char** argv) {
我是一名优秀的程序员,十分优秀!