Selon cette documentation http://www.cplusplus.com/reference/clibrary / ctérieur / heure / p>
Pour le temps (null) "Si la fonction ne pouvait pas récupérer l'heure du calendrier, il renvoie une valeur de -1." P>
Est-ce quelque chose que je devrais vérifier dans mon code? Sûrement quelque chose doit aller assez tort si le temps (null) ne récupère pas le temps. P>
4 Réponses :
Page d'homme Ubuntu dit osx man's page dit qu'il peut échouer pour les mêmes raisons que Par conséquent, il ne peut pas échouer pour l'argument de aussi, POSIX Spécifie du tout des conditions d'erreur pour cela. fonction. p> TIME (2) CODE> peut échouer en raison de efault code> (" t code> Points en dehors de votre espace d'adresses accessible"). < / p>
GetTimeOdday code>, qui sont efault code> et Eperm code> (pas sûr de savoir comment cela s'applique à temps code>). p>
null code>, en fonction de la documentation des systèmes susmentionnés. P>
La question concerne quand t est null.
Vous avez quelque chose appelé une horloge système. Si cela est cassé, cela échouera, bien qu'il puisse y avoir de nombreuses autres raisons. P>
Comment l'horloge système peut-elle "casser"? Je l'ai vu perdre du temps, gagner du temps et se comporter anormalement. Mais je ne l'ai jamais vu ne pas travailler du tout.
Référence à l'article d'Atomice: Si vous utilisez ceci pour dire --- Le NDS (www.devkitpro.com), alors il peut i> (Downvoter Expliquez-vous)
Vous pouvez exécuter sur un périphérique intégré qui n'a pas d'horloge en temps réel.
Le code source GLIBC prétend que le temps SysCall ne peut pas échouer sur Linux: P>
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;
}
Le cas évident serait un système dont l'horloge interne nécessite une initialisation externe (à l'aide d'EG. NTP). Jusqu'à ce que cela soit arrivé, l'horloge interne ne peut pas donner des valeurs relatives à époch, bien qu'elle puisse être utilisée pour mesurer les intervalles. TIME_T CODE> est EPOCH-Relatif et donc TIME (NULL) CODE> DOIT ÉCHÉNER dans ce cas. P>
ne serait-il pas temps (null) juste donner la mauvaise réponse ici? Plutôt que d'échouer et de retourner -1?
Non, pas si c'est correctement mis en œuvre. C'est assez raisonnable. Considérez un système d'exploitation qui implémente un / dev / d / code> deivce, lequel lorsque la lecture donne l'heure actuelle. Jusqu'à l'initialisation, vous obtiendrez une erreur de lecture sur l'appareil. Une norme C lib serait transmettre à cette défaillance lors de l'appelant heure () code>
Lorsqu'il y a une panne de courant grave ou lorsque votre ordinateur se bloque ...;) ... vous le mettez dans un blocage enfin?