Модуль errno
Модуль errno
, как правило, используется внутри функции или в рамках Lua-программы совместно с модулем, функции которого могут возвращать ошибки ОС, например fio.
Ниже приведен перечень всех функций модуля errno
.
Имя | Назначение |
---|---|
errno() | Получение номера ошибки для последней функции, связанной с ОС |
errno.strerror() | Получение сообщения об ошибке для соответствующего номера ошибки |
-
errno()
Возврат номера ошибки для последней функции, связанной с операционной системой, или 0. Чтобы вызвать функцию, просто введите команду
errno()
без названия модуля.тип возвращаемого значения: целое число
-
errno.
strerror
([code])¶ Возврат строки в ответ на номер ошибки. Строка будет содержать текст традиционного сообщения об ошибке для текущей операционной системы. Если не указан код
code
, то будет выведено сообщение об ошибке для последней функции, связанной с операционной системой, или 0.Параметры: - code (
integer
) – номер ошибки в операционной системе
тип возвращаемого значения: строка
- code (
Пример:
Данная функция отображает результат вызова fio.open(), который вызывает ошибку 2 (errno.ENOENT
). В результат включен номер ошибки, связанная с ним строка сообщения об ошибке и название ошибки.
tarantool> function f()
> local fio = require('fio')
> local errno = require('errno')
> fio.open('no_such_file')
> print('errno() = ' .. errno())
> print('errno.strerror() = ' .. errno.strerror())
> local t = getmetatable(errno).__index
> for k, v in pairs(t) do
> if v == errno() then
> print('errno() constant = ' .. k)
> end
> end
> end
---
...
tarantool> f()
errno() = 2
errno.strerror() = No such file or directory
errno() constant = ENOENT
---
...
Чтобы увидеть все возможные названия ошибок, которые хранятся в метатаблице errno
, введите команду getmetatable(errno)
(выводятся сокращенно):
tarantool> getmetatable(errno)
---
- __newindex: 'function: 0x41666a38'
__call: 'function: 0x41666890'
__index:
ENOLINK: 67
EMSGSIZE: 90
EOVERFLOW: 75
ENOTCONN: 107
EFAULT: 14
EOPNOTSUPP: 95
EEXIST: 17
ENOSR: 63
ENOTSOCK: 88
EDESTADDRREQ: 89
<...>
...