Comment vérifier les erreurs dans la boucle nanosleep

J’ai une fonction nanosleep en boucle while. C’est un exemple que j’ai trouvé dans le livre “Linux System Programming: Talking Direct to the Kernel and C Library”

while(nanosleep(a, b) && errno==EINTR){ struct timespec *tmp =a; a=b; b=tmp; } 

Fonctionne parfaitement mais je ne suis pas sûr de savoir comment vérifier d’autres erreurs que EINTR pour pouvoir imprimer une erreur à l’écran et quitter le programme. Des idées?

Vous pouvez simplement stocker la valeur de retour dans la condition de boucle:

 int ret; while((ret = nanosleep(a, b)) && errno==EINTR){ struct timespec *tmp =a; a=b; b=tmp; } if (ret) { perror("nanosleep"); exit(1); }