c - 在 Linux 上什么时候调用 time(NULL) 会失败

标签 c time

根据本文档http://www.cplusplus.com/reference/clibrary/ctime/time/

for time(NULL) “如果函数无法检索日历时间,则返回 -1 值。”

这是我应该在我的代码中检查的内容吗?如果 time(NULL) 没有检索到时间,肯定是出了什么问题。

最佳答案

您可能在没有实时时钟的嵌入式设备上运行。

glibc 源代码声称时间系统调用在 Linux 上不会失败:

 time_t res = INTERNAL_SYSCALL (time, err, 1, NULL);
  /* There cannot be any error.  */

如果您查看内核源代码,确实是这种情况:

SYSCALL_DEFINE1(time, time_t __user *, tloc)
{
        time_t i = get_seconds();

        if (tloc) {
                if (put_user(i,tloc))
                        return -EFAULT;
        }
        force_successful_syscall_return();
        return i;
}

关于c - 在 Linux 上什么时候调用 time(NULL) 会失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1571937/

相关文章:

java - 当我想以毫秒为单位获取 unix 时间时,Mongodb 时间戳输出格式返回 "$numberLong"对象

谁能给我解释一下这段C代码的工作原理吗?

c - 内核散点列表在虚拟地址中是否连续?

C:编译错误 - "expected expression"并且没有写其他内容?

c - 如何用 C 中的最高有效位 (MSB) 替换最低有效位 (LSB)

c - 检测 Azure Linux VM 中的临时磁盘

MySQL 选择 : WHERE (time now) = BETWEEN tablevalue AND tablevalue

java - 如何将 DateTimeFormatter 用于模式 dMMyyyy

linux - bash 脚本从文件中获取所花费的时间

time - gnuplot用x值标记特定的y数据点