2010-11-14 7 views
0

J'utilise ioctl() pour vérifier si la fin de lecture d'un tube bloque. J'ai mis ioctl(the_pipe[0], FIONBIO, ...) (je ne suis pas sûr ce que le 3ème paramètre est censé être, puis-je le mettre à NULL?). Si je comprends bien, read(the_pipe[0], buf, buf_len); est supposé définir un code d'erreur pour EWOULDBLOCK (EAGAIN), mais où est ce code d'erreur, comment l'obtenir?Comment errno est-il défini par ioctl() dans c

Merci

Répondre

3

errno est disponible après avoir inclus errno.h

+0

Pour être plus explicite, mettez "#include " en haut de votre code. Plus tard, vous pouvez faire quelque chose comme "if (errno == EWOULDBLOCK) ...". Vous ne voulez pas ou ne devez pas définir errno vous-même; il est défini pour vous en incluant le fichier d'en-tête. – UncleO

0

Notez également que errno est définie par les appels système, mais n'est pas effacé. Autrement dit, si vous ne vérifiez pas les erreurs après chaque appel système ou si vous effacez explicitement errno avant l'appel en question, vous ne serez pas sûr de quelle appel système définir errno.