Tarantool CE/EE Documentation portal logo
Помощь
Обновлена 15 сентября 2026 г. в 08:55

Функция on_shutdown

int box_on_shutdown(void *arg, int(*new_handler)(void *), int(*old_handler)(void *))

Добавлено в версии 2.8.1. Зарегистрировать и/или отменить регистрацию функции on_shutdown.

Параметры:

  • arg (void*) — Указатель на область, которую может использовать новый обработчик

  • new_handler (function*) — Указатель на функцию, которая будет зарегистрирована, или NULL

  • old_handler (function*) — Указатель на функцию, регистрация которой будет отменена, или NULL

Возвращает

статус операции. 0 - успех, -1 - неудача

Тип возвращаемого значения

int

Зарегистрированная функция будет вызвана при завершении работы экземпляра Tarantool. По функциональности это аналогично тому, что делает box.ctl.on_shutdown.

Если функций on_shutdown несколько, экземпляр Tarantool вызовет их в порядке, обратном порядку регистрации, то есть первой будет вызвана функция, зарегистрированная последней.

Обычно разработчик модуля регистрирует функцию on_shutdown, которая выполняет необходимую модулю очистку, а затем возвращает управление экземпляру Tarantool. Такая функция on_shutdown должна работать быстро либо использовать асинхронный механизм ожидания (например, coio_wait).

Возможные ошибки:

  • old_handler не существует (errno = EINVAL)
  • new_handler и old_handler одновременно равны NULL (errno = EINVAL)
  • не удалось выделить память (errno = ENOMEM)

Пример

Если программа .c с использованием C API содержит функцию:

int on_shutdown_function(void *arg){    printf("Bye!\n");    return 0;}

а далее в функции, которую вызывает экземпляр, содержится строка

box_on_shutdown(NULL, on_shutdown_function, NULL);

то, если всё пройдёт успешно, при завершении работы экземпляра будет выведено Bye!.