Предыдущая ОглавлениеСледующая

errno

Хранит номер ошибки, произошедшей при последнем системном вызове

Прототип

#include <errno.h>

int errno;

Описание

Эта переменная хранит ошибку для большинства системных вызовов. Функции вроде socket() и listen() возвращают -1 при ошибке, а конкретный номер ошибки сохраняется в errno, чтобы уточнить, что именно произошло не так.

Заголовок errno.h описывает несколько констант-символических имен ошибок, например EADDRINUSE, EPIPE, ECONNREFUSED, т.п. Твое руковоство man перечисляет их все, и ты можешь использовать эту информацию для обработки разных ошибок по-разному.

Хотя чаще всего люди просто вызывают perror() или strerror() для получения текстового описания ошибки.

Возвращаемое значение

Значение этой переменной - номер последней произошедшей ошибки, или код "успеха" если последний вызов прошел успешно.

Пример

s = socket(PF_INET, SOCK_STREAM, 0);
if (s == -1) {
    perror("socket"); // или strerror()
}

tryagain:
if (select(n, &readfds, NULL, NULL) == -1) {
    // ошибка!!

    // нас прервали, снова вызываем select():
    if (errno == EINTR) goto tryagain;  // АААА!  goto!!!

    // иначе ошибка серьезнее:
    perror("select");
    exit(1);
}

См. также

perror(), strerror()


Предыдущая ОглавлениеСледующая