Articles of 时钟

在timeval和clock()之间进行select,以C计算已用时间

我使用timeval以及clock()函数来查看我的c程序中的两个动作之间的时间差异。 不知何故,timeval似乎给了我以毫秒为单位的经过时间,clock()的值非常小。 g_time = clock(); gettimeofday(&decode_t,NULL); 一段时间后 delay =((float)(clock()-g_time)/(float)CLOCKS_PER_SEC); gettimeofday(&poll_t,NULL); delay1 = ((poll_t.tv_sec – decode_t.tv_sec)*1000 + (poll_t.tv_usec – decode_t.tv_usec)/1000.0) ; printf("\ndelay1: %f delay: %f ",delay1,delay); 平时的输出是: 延迟1:1577.603027延迟:0.800000 delay1以毫秒为单位,延迟以秒为单位。 IAM使用archlinux 64位。我无法理解为什么会发生这种情况。

在C ++和Linux中显示时钟最简单的方法

我在Linux下使用C ++编译标准的GCC。 在我的程序中,我想添加一个简单的时钟显示HH:MM:SS。 什么是最简单的方法来做到这一点?

32位Linux时钟()溢出

我需要在Linux(和其他类Unix系统)上的C ++中测量长时间计算所花的CPU(而不是挂钟)时间,所以我使用了clock()。 问题:在32位系统上,这大约在2000或4000秒后回绕。 这是什么build议的解决方法?

数字时钟程序在C中使用中断?

我正在写一个计算机集群的监视程序,在LCD屏幕上显示大量的数据。 作为显示的一部分,我想有一个数字时钟运行显示当前的date,小时,分钟和秒。 问题是,我有一大堆循环中执行的任务(ping请求,A / D转换,文件扫描),我没有时间在循环中更新时钟。 我在Linux下使用C(Debian)。 我应该如何解决这个问题的任何build议? 我正在考虑使用中断来更新每秒的时钟,但是在Linux下如何去做呢? 我以前只使用微控制器的中断。

clock_nanosleep不返回-1 /设置errno EINTR – LINUX

我是一个Linux新手。 我正在尝试使用clock_nanosleep来实现一个简单的任务。 问题是,clock_nanosleep在被信号中断之后没有将errno设置到EINTR。 我曾尝试重置SA_RESTART标志。 但是,没有成功。 这是我的代码。 谢谢。 void signalHandler( int signum ) { printf("Interrupt signal received.\n"); } void *periodic_thread (void *param) { struct itimerspec its; struct sigevent sig; struct timespec next, period; sigset_t blocked; siginfo_t si; timer_t mytimer; int i, j; /* create a timer that will be used to periodically send a signal */ […]

在linux的进程间通信应该使用哪个时钟?

我已经实现了两个单线程进程A和B与两个味精队列[单独发送和接收队列]。 进程A将向B发送消息并等待接收队列中的回复。 我想发送一个时间戳从进程A到进程B.如果进程B在10秒后收到消息,我想发送一个错误string从进程B到A. 准确度应该在毫秒。 在我使用的过程中, struct timespec msg_dispatch_time; clock_gettime(CLOCK_REALTIME, &msg_dispatch_time); : : add_timestamp_in_msg(msg, msg_dispatch_time); : if (msgsnd(msqid, msg, sizeof(msg), msgflg) == -1) perror("msgop: msgsnd failed"); 在过程B中, struct timespec msg_dispatch_time; struct timespec msg_receive_time; : clock_gettime(CLOCK_REALTIME, &msg_received_time); : if( !(time_diff(msg_received_time, msg_dispatch_time) >= 10 )) msgsnd(msqid, &sbuf, buf_length, msg_flag) else { /*send the error string.*/ //msgsnd(msgid,) } 我的问题是, […]

如何定义循环运行几秒/分钟

我的目的是在规定的时间内执行一个while循环(例如在这个例子中是90秒)。 它不一定是完全90秒,但1-2秒的不准确是可以接受的。 我修理使用clock()函数来达到这个目的: int main(void){ clock_t start, end; volatile double elapsed; start = clock(); int terminate = 1; while(terminate) { end = clock(); elapsed = ((double) (end-start)) / (double) CLOCKS_PER_SEC *1000; printf("elapsed time:%f\n",elapsed); if(elapsed >= 90.0) terminate = 0; usleep(50000); } printf("done..\n"); return 0; } 当我在我的笔记本电脑(x86,3.13内核,gcc 4.8.2)上运行它时,我的秒表测量了72秒完成。 (我的笔记本电脑需要1000秒精确度) 当我在ARM设备(armv5tejl,3.12内核,gcc 4.6.3)上运行它时,需要58秒才能完成代码。 (我需要在armv5上使用100次)。 我在室温下运行代码,所以时钟应该是稳定的。 我知道,内核睡眠的线程,并有时间来唤醒他们等不准确,因此,正如我以前所说,我不期望得到一个完美的时间,但它应该有一些准确性。 我曾尝试过使用(甚至是nanosleep ),但是解决scheme并不好。 […]

Linux中的时钟源

在运行内核版本2.6.38的系统中,我看到这个sysfs文件显示了当前的时钟源(恰好是tsc)/ sys / devices / system / clocksource / clocksource0 / current_clocksource 但看起来这个sysfs文件最近被引入。 在2.6.9中,我没有看到这个文件。 在没有这个sysfs的版本中有一个容易看到时钟源? 当我比较这些版本中的clock_gettime()输出时,2.6.9似乎是以微秒为粒度,而2.6.38则以纳秒为粒度。 因此想知道2.6.9中的时钟源是什么。

在linux上将hwclock设置为UTC

我如何设置我的时钟centos到UTC时间permanent.The值从UTC更改为本地时间reboot.This导致我的应用程序有时间drift./etc/sysconfig文件UTC值也重新启动后切换从真到假。

clock_gettime()每50-100毫秒返回1-2ms的不准确性(Debian在Virtualbox上运行)

我刚才在这里有一个密切相关的线程。 但是,用usleep(50e3)replacecin.ignore() usleep(50e3) 。 它不会每隔50毫秒报告一次。 时钟报告 Time Passed: s: 0 ms: 50 Time Passed: s: 0 ms: 101 Time Passed: s: 0 ms: 152 Time Passed: s: 0 ms: 202 Time Passed: s: 0 ms: 252 Time Passed: s: 0 ms: 303 Time Passed: s: 0 ms: 353 Time Passed: s: 0 ms: 403 Time […]