CodeNet / Языки программирования / C / C++ / Linux/Unix / Справочник С/C++ для UNIX - Список функций
CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник С/C++ для UNIX - Список функций
CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник С/C++ для UNIX - Список функций
strerror
STRERROR
#include <string.h> требуется только для объявления
функции
char *strerror(string);
char *string; сообщение, поставляемое
пользователем
int errno; счетчик ошибок
int sys_nerr; счетчик сообщений системы
char sys_errlist[sys_nerr];
массив сообщений об ошибках
Описание.
Если string равна NULL, функция strerror возвращает указа-
тель на строку, содержащую системное сообщение об ошибке для пос-
леднего библиотечного вызова, в котором выработана ошибка; эта
строка оканчивается символом новой строки ('\n').
Если string не равна NULL, strerror возвращает указатель на
строку, содержащую сообщение об ошибке, поставляемое пользовате-
лем; двоеточие; пробел; системное сообщение об ошибке для послед-
него библиотечного вызова, выработавшего ошибку; и символ новой
строки ('\n'). Сообщение пользователя может иметь максимальную дли-
ну до 94 байта.
В отличии от perror, strerror не печатает никаких сообще-
ний. Для печати сообщения, возращаемого strerror в stderr, в
программе должен быть оператор printf, например:
if((access("datafile",2))++-1)
printf(strerror(NULL));
Номер ошибки хранится в переменной errno, которая объявлена
на внешнем уровне. Системные сообщения об ошибках доступны через
переменную sys_errlist, которая является массивом сообщений для
ошибок из счетчика ошибок. По функции strerror посредством ис-
пользования значения errno как индекса к sys_errlist можно уста-
новить приблизительные сообщения об ошибках. Значение переменной
sys_nerr определяется как максимальное число элементов в массиве
sys_errlist.
Чтобы выработать правильный результат, функция strerror
должна быть вызвана сразу после библиотечной процедуры, возвраща-
ющей ошибку. Иначе значение errno может быть перезаписано для
последующих вызовов.
Возвращаемое значение.
Функция strerror не возвращает никакого значения.
См. также clearerr, ferror, perror.
Замечание. В MS DOS некоторые значения errno, приведенные в
<errno.h>, не используются. См. приложение А "Сообщения об ошиб-
ках", где приведен список значений errno и соответствующие сооб-
щения об ошибках, которые применяются в MS DOS . Для любого зна-
чения errno, не используемого в MS DOS, функция strerror печатает
пустую строку.
Пример.
#include <fcntl.h>
#include <sys\types.h>
#include <sys\stat.h>
#include <io.h>
#include <stdlib.h>
int fh1, fh2;
fh1 = open("data1", O_RDONLY);
if (fh1==-1)
strerror("open failed on input file");
fh2 = open("data2", O_WRONLY : O_CREAT,
S_IREAD : S_IWRITE);
if (fh2==-1)
srterror("open failed on output file");
