Это архив сайта coldflame.by.ru, он не обновлялся с 2007 года. Мой современный сайт тут: http://leonid.shevtsov.me.
Домой! Обо мне Специально для РИ-06-1 Разнообразное... барахло, короче :) Программы и прочее Статьи и переводы Блог SmartDaemon
Предыдущая ОглавлениеСледующая

perror(), strerror()

Получить ошибку в виде читабельной строки

Прототипы

#include <stdio.h>

void perror(const char *s);

#include <string.h>

char *strerror(int errnum);

Описание

Поскольку много функций возвращают при ошибке -1 и сохраняют ее номер в переменной errno, было бы удобно каким-то образом преобразовывать этот номер в форме, которую можно понять.

К счастью, perror() этим и занимается. Если хочешь получить расширенную информацию, передай ей s (или можешь передать NULL вместо s.)

Эта функция берет значение errno, типа ECONNRESET, и выводит описание, типа "Connection reset by peer."

(Конечно, это описание будет на английском языке - прим. перев.)

Функция strerror() похожа на perror(), но просто возвращает указатель на строку с описанием данной ошибки (которую ты передаешь параметром errnum.)

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

strerror() возвращает указатель на описание ошибки.

Пример

int s;

s = socket(PF_INET, SOCK_STREAM, 0);

if (s == -1) { // произошла ошибка
    // выводит "ошибка socket: " + сообщение об ошибке:
    perror("ошибка socket");
}

// аналогично:
if (listen(s, 10) == -1) {
    // выводит "ошибка: " + сообщение об ошибке errno:
    printf("ошибка: %s\n", strerror(errno));
}

См. также

errno


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