strerror_r()

Преобразовать код ошибки в сообщение об ошибке (с повторным запуском)

Прототип:

#include <string.h>
int strerror_r( int errnum,
char *strerrbuf,
size_t buflen );

Аргументы:

errnum
Код ошибки, который требуется преобразовать в сообщение. Функция выполняется для любого корректного значения errno.
strerrbuf
Указатель на буфер, в котором функция может хранить сообщение об ошибке.
buflen
Длина буфера в байтах.

Библиотека:

libc

Описание:

Функция strerror_r() сопоставляет код ошибки, содержащийся в errnum, с сообщением об ошибке, которое она сохраняет в буфере strerrbuf.

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

0
Успешное завершение.
EINVAL
Значение errnum является некорректным кодом ошибки.
ERANGE
Буфер, на который указывает strerrbuf, не может вместить сгенерированную строку сообщения.

Примеры:

#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <stdlib.h>
#define MSG_LEN 100
int main( void )
{
FILE *fp;
char msg_buff[MSG_LEN];
int error_num;
fp = fopen( "file.name", "r" );
if ( fp == NULL )
{
error_num = strerror_r( errno, msg_buff, MSG_LEN );
switch ( error_num )
{
case 0:
printf( "Unable to open file: %s\n", msg_buff );
break;
case EINVAL:
printf( "strerror_r() failed: invalid error code, %d\n", error_num );
break;
case ERANGE:
printf( "strerror_r() failed: buffer too small: %d\n", MSG_LEN );
break;
}
}
return (EXIT_SUCCESS);
}

Классификация:

POSIX 1003.1 Thread-Safe Functions

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Тематические ссылки:

errno, perror(), stderr, strerror()




Предыдущий раздел: Описание API системной библиотеки