【问题标题】:Minix current timeMinix当前时间
【发布时间】:2014-11-15 21:36:54
【问题描述】:

如何在 Minix 3.2.1 上以 printf 写入当前时间?
我尝试使用gmtime,如下所示,但在time(&nowtime) 上出现错误。

#include <sys/time.h>
#include <time.h>

struct tm *now;
time_t nowtime;
time(&nowtime);
now=gmtime(&nowtime);

printf("TIME is NOW %s",now);

此外,我尝试在内核 (/usr/src/kernel/main.c) 中回忆这一点,因为我需要在 minix 启动时说明内核进程何时完成并切换到用户。

我在上面的代码中出现了一些错误,比如像下面这样重建内核时;

【问题讨论】:

  • 1) 代码中是否包含&lt;time.h&gt;? 2) 发布错误信息。
  • 是的 time.h 包含在 struct tm *now 中,使用不同的类型重新定义“now”的错误。我现在也用 nowwwww 进行更改,但仍然给出相同的错误
  • 似乎存在矛盾:“在time(&amp;nowtime) 上给出错误”和“struct tm *now 给出'现在'的错误重新定义”。 time(&amp;nowtime) 上的可疑错误是not
  • 将其扩展为一个完整的可编译程序(它应该只需要多几行),然后将确切的错误消息复制并粘贴到您的问题中。

标签: c unix unix-timestamp minix


【解决方案1】:

对 minix 不太熟悉,但它类似于 Unix 和 Linux,所以也许该平台的某些东西可能会出现在 minix 上......所以有几种方法

  • ctime上运行一个人

  • Linux 的 time() 命令的手册页包含此示例代码(您可能需要针对 minix 进行修改,但它显示了如何使用 asctime() localtime()time() ):

      #include <stdio.h>
      #include <time.h>
    
      int main(void)
      {
          time_t result;
    
          result = time(NULL);
          printf("%s%ju secs since the Epoch\n",
              asctime(localtime(&result)),
                  (uintmax_t)result);
          return(0);
      }
    

【讨论】:

  • 这不是特别有用。问题中的代码正确使用了timegmtime 函数。问题在于 OP 尚未向我们展示的东西。
  • 我在 virtualbox 中安装了 minix 3.3,编译并运行了上面显示的 Linux 示例代码的“略微”修改版本,它成功运行。也许 OP 可以更简洁地说明他遇到了什么问题,他遇到的具体错误代码以及他想要完成的工作。
  • Tony 可能是我使用的版本的问题,但我也尝试了你的版本,但它失败了,因为说 result=time(NULL) 期望 int 或已知类型。它可以在 Linux 上运行,但 minix 无法识别完全或者我想念别的东西
  • 此外,我更详细地修改了我的问题
  • 你用的是什么版本的 minix...???你还说“......它失败了,因为说 result=time(NULL) 期望 int 或已知类型。”我假设您是在解释编译器错误。您使用的是哪个编译器,错误的确切文本是什么???还请确认您是在 Minix 上编译,而不是在另一个平台上交叉编译...并且,您是针对 PC 架构还是 ARM 架构进行编译...???
猜你喜欢
  • 2016-12-16
  • 2021-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-07
  • 2011-03-15
  • 1970-01-01
相关资源
最近更新 更多