When could a call to time(NULL) fail on Linux

c, time

Solution

You may be running on an embedded device that doesn't have a real-time clock.

The glibc source code claims that the time syscall can't fail on Linux:

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

and indeed this is the case if you look at the kernel source:

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;
}

Problem

According to this documentation http://www.cplusplus.com/reference/clibrary/ctime/time/ for time(NULL) "If the function could not retrieve the calendar time, it returns a -1 value." Is this something I should check for in my code? Surely something has got to be going pretty wrong if time(NULL) is not retrieving the time.

Original source