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.