Где я могу найти содержимое sys_errlist? - PullRequest
3 голосов
/ 13 декабря 2011

sys_errlist проиндексирован errno и содержит соответствующее сообщение об ошибке. Где я могу увидеть содержимое этого списка?

Ответы [ 4 ]

5 голосов
/ 13 декабря 2011

Возможно, в каком-то системном заголовочном файле каким-то образом добавлено <errno.h>. Если вы хотите распечатать весь его контент, вы можете легко сделать это с помощью небольшой программы:

#include <errno.h>
#include <stdio.h>

int main()
{
    for(int i=0; i<sys_nerr; i++)
        printf("sys_errlist[%d] = \"%s\"\n", i, sys_errlist[i]);
    return 0;
}

(sys_nerr определяется как количество записей в sys_errlist)

Тем не менее, имейте в виду, что, согласно моим руководствам, perror или strerror предпочтительнее, поскольку

новые значения ошибок, возможно, не были добавлены к sys_errlist[].

4 голосов
/ 13 декабря 2011

Это устарело , и вы должны использовать strerror

1 голос
/ 10 февраля 2016

Фактические определения ошибок в заголовках находятся в двух файлах, /usr/include/asm-generic/errno-base.h и /usr/include/asm-generic/errno.h

.
1 голос
/ 13 декабря 2011

Как

man sys_errlist 

говорит мне:

  • sys_errlist - массив, содержащий сообщения
  • sys_nerr содержит количество сообщений в sys_errlist, поэтому вы можете получить доступ к сообщениям от 0 до sys_nerr-1
  • sys_errlist является устаревшим , используйте strerror() или strerror_r() вместо
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...