我很难添加两个长整数,本质上我想要的是使用这两个变量花费的“总”时间,我一直保持为0。

struct rusage rusage;
getrusage(RUSAGE_SELF, &rusage);
printf("TOTAL TIME \n");
printf("%ld.%06ld", (rusage.ru_utime.tv_sec, rusage.ru_utime.tv_usec),
                    (rusage.ru_stime.tv_sec, rusage.ru_stime.tv_usec));


它打印出0。我可以打印出用户时间,系统时间,但是我不能添加它们。请帮忙。

作者想要的不仅仅是添加两个long整数,而是分别添加两个timeval结构的秒和微秒。

最佳答案

这样的东西,但是可以写得更好:

  struct rusage rusage;
  struct rusage tusage;
  getrusage(RUSAGE_SELF, &rusage);
  printf("TOTAL TIME \n");
  tusage.ru_utime.tv_sec = rusage.ru_utime.tv_sec + rusage.ru_stime.tv_sec;
  tusage.ru_utime.tv_usec = rusage.ru_utime.tv_usec + rusage.ru_stime.tv_usec;
  tusage.ru_utime.tv_sec += tusage.ru_utime.tv_usec / 1000000;
  tusage.ru_utime.tv_usec = tusage.ru_utime.tv_usec % 1000000;
  printf("%ld.%06ld\n", tusage.ru_utime.tv_sec, tusage.ru_utime.tv_usec);

08-17 04:59