Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
linux启动时间和停止计时器不工作? #包括 #包括 #包括 #包括 #包括 #包括 #包括 #包括 #包括 #包括 #包括 #包括 typedef无符号整数uint32; #定义百万一百万 长持续时间2ms,持续时间10ms,持续时间100ms; 双任务2ms\u光栅、任务10ms\u光栅、任务100ms\u光栅; 计时器\u t firstTimerID、secondTimerID、thirdTimerID; 无效TASK1(Task2ms_光栅){ 结构timespec启动、停止; INTA、b、c; uint32开始时间,停止时间; a=100,b=2; if((StartTime=clock\u gettime(clock\u REALTIME,&start))=-1){ perror(“时钟获取时间”); } printf(“开始时间=%ld\n”,开始时间); //我在做一些计算,比如 a=a+100; b=a+120; a=a+b; b=a; c=b; if((StopTime=clock\u gettime(clock\u REALTIME,&stop))=-1){ perror(“时钟获取时间”); } printf(“停止时间=%ld\n”,停止时间); 持续时间2ms=(停止.tv_秒-开始.tv_秒)+ (双)(stop.tv\u nsec-start.tv\u nsec)/ (加倍)100万; printf(“时差=%ld\n”,持续时间2ms); }_C_Linux_Timer_Timertask - Fatal编程技术网

linux启动时间和停止计时器不工作? #包括 #包括 #包括 #包括 #包括 #包括 #包括 #包括 #包括 #包括 #包括 #包括 typedef无符号整数uint32; #定义百万一百万 长持续时间2ms,持续时间10ms,持续时间100ms; 双任务2ms\u光栅、任务10ms\u光栅、任务100ms\u光栅; 计时器\u t firstTimerID、secondTimerID、thirdTimerID; 无效TASK1(Task2ms_光栅){ 结构timespec启动、停止; INTA、b、c; uint32开始时间,停止时间; a=100,b=2; if((StartTime=clock\u gettime(clock\u REALTIME,&start))=-1){ perror(“时钟获取时间”); } printf(“开始时间=%ld\n”,开始时间); //我在做一些计算,比如 a=a+100; b=a+120; a=a+b; b=a; c=b; if((StopTime=clock\u gettime(clock\u REALTIME,&stop))=-1){ perror(“时钟获取时间”); } printf(“停止时间=%ld\n”,停止时间); 持续时间2ms=(停止.tv_秒-开始.tv_秒)+ (双)(stop.tv\u nsec-start.tv\u nsec)/ (加倍)100万; printf(“时差=%ld\n”,持续时间2ms); }

linux启动时间和停止计时器不工作? #包括 #包括 #包括 #包括 #包括 #包括 #包括 #包括 #包括 #包括 #包括 #包括 typedef无符号整数uint32; #定义百万一百万 长持续时间2ms,持续时间10ms,持续时间100ms; 双任务2ms\u光栅、任务10ms\u光栅、任务100ms\u光栅; 计时器\u t firstTimerID、secondTimerID、thirdTimerID; 无效TASK1(Task2ms_光栅){ 结构timespec启动、停止; INTA、b、c; uint32开始时间,停止时间; a=100,b=2; if((StartTime=clock\u gettime(clock\u REALTIME,&start))=-1){ perror(“时钟获取时间”); } printf(“开始时间=%ld\n”,开始时间); //我在做一些计算,比如 a=a+100; b=a+120; a=a+b; b=a; c=b; if((StopTime=clock\u gettime(clock\u REALTIME,&stop))=-1){ perror(“时钟获取时间”); } printf(“停止时间=%ld\n”,停止时间); 持续时间2ms=(停止.tv_秒-开始.tv_秒)+ (双)(stop.tv\u nsec-start.tv\u nsec)/ (加倍)100万; printf(“时差=%ld\n”,持续时间2ms); },c,linux,timer,timertask,C,Linux,Timer,Timertask,我创建了计时器,并每2ms、10ms和100ms调用一次任务。以上是2ms任务的代码。我想计算在任务中执行某些计算的开始时间和停止时间,最后想知道两者之间的时间差。当我运行应用程序时,它只是显示时间差(即持续时间2ms)。它不是打印开始时间和停止时间。有人能帮帮我吗。如果你阅读《时钟》的手册页,你会看到 clock_gettime()返回0表示成功,返回-1表示失败 因此,您只打印返回代码。要打印开始时间和停止时间,您需要打印变量的内容start和stop。例如: #include <sy

我创建了计时器,并每2ms、10ms和100ms调用一次任务。以上是2ms任务的代码。我想计算在任务中执行某些计算的开始时间和停止时间,最后想知道两者之间的时间差。当我运行应用程序时,它只是显示时间差(即持续时间2ms)。它不是打印开始时间和停止时间。有人能帮帮我吗。

如果你阅读《时钟》的手册页,你会看到

clock_gettime()返回0表示成功,返回-1表示失败

因此,您只打印返回代码。要打印开始时间和停止时间,您需要打印变量的内容
start
stop
。例如:

#include <sys/time.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <signal.h>
#include <unistd.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>

#include <netinet/in.h>
#include <arpa/inet.h>

typedef unsigned int uint32;

#define million 1000000L

long duration2ms, duration10ms, duration100ms;
double Task2ms_Raster, Task10ms_Raster, Task100ms_Raster;
timer_t firstTimerID, secondTimerID, thirdTimerID;

void TASK1(Task2ms_Raster) {
    struct timespec start, stop;
    int a, b, c;
    uint32 StartTime, StopTime;
    a=100, b=2;

    if((StartTime = clock_gettime(CLOCK_REALTIME, &start)) == -1) {
        perror("clock gettime");
    }
    printf("start time is= %ld\n", StartTime);
    //I am performing some computation like 
    a = a + 100;
    b = a + 120;
    a = a + b;
    b = a;
    c = b;
      if((StopTime = clock_gettime( CLOCK_REALTIME, &stop)) == -1) {
        perror("clock gettime");
    }

 printf("stop time is= %ld\n", StopTime);

    duration2ms = (stop.tv_sec - start.tv_sec) +
                  (double)(stop.tv_nsec - start.tv_nsec) /
                  (double)million;
    printf("time difference is= %ld\n", duration2ms);
}
你需要的是

   printf("Start time: %d.%09d\n", start.tv_sec, start.tv_nsec);

尝试在最后一个}之前添加一个fflush(stdout)。在刷新所有内容之前,任务可能已经结束。@cup,不需要这样做,在正常执行结束时,所有输出缓冲区都被刷新。非常感谢您的回复。是否可以将其作为StartTime存储在变量中??你能告诉我怎么做吗。。。StartTime=start.tv\u sec+0.000001*start.tv\u nsec对不起。应为0.000000001。该值以纳秒为单位。我以前使用的是以微秒为单位的
struct timeval
。时间由两个值表示:
.tv\u sec
表示自1970年1月1日午夜以来的秒数,
.tv\u nsec
表示自上一秒以来的纳秒数。要将它们组合成一个数字,您必须将
.tv\u sec
乘以
1e9
,或将
.tv\u nsec
除以
1e9
。计算开始时间和停止时间后:duration2ms=停止时间-开始时间//是这样吗?
uint64_t u64StartTime = (start.tv_sec * 100000000) + start.tv_nsec;