Добавить уведомляющий сигнал к условию
#include <ha/ham.h>ham_action_t * ham_action_notify_signal( ham_condition_t *chdl,const char *aname,int nd,pid_t topid,int signum,int code,int value,unsigned flags );ham_action_t * ham_action_notify_signal_node( ham_condition_t *chdl,const char *aname,const char *nodename,pid_t topid,int signum,int code,int value,unsigned flags );
libham
Данные функции добавляют действие к заданному условию. Действие доставит уведомляющий сигнал процессу topid.
Действие выполняется, когда срабатывает соответствующее условие.
Следует использовать дескриптор узла (nd), чтобы указать получателя уведомления.
nd указывает идентификатор удаленного (или локального) узла, куда будет отправлен сигнал.
![]() | Поскольку идентификаторы узлов являются временными объектами, необходимо получить значение для nd непосредственно перед вызовом, используя netmgr_strtond() или другую функцию, которая преобразует nodename в идентификаторы узлов. |
Используйте функцию ham_action_notify_signal_node(), когда nodename используется для указания удаленного HAM вместо идентификатора узла (nd). Функция ham_action_notify_signal_node() принимает в качестве параметра полное имя узла (FQNN).
Сигнал signum с заданным значением будет доставлен процессу pid на узле nd. Этот механизм также можно использовать для завершения процессов, отправляя им соответствующие сигналы, такие как SIGTERM
, SIGKILL
и т. д.
Пользователи могут указать, что будет сделано, если действие не будет совершено. Такие действия добавляются в список. Для каждого несовершенного действия будет выполнен соответствующий список действий. Некоторые действия (например, ham_action_log() и ham_action_heartbeat_healthy()) гарантированно совершаются. Для получения дополнительной информации обратитесь к соответствующему разделу в Использование менеджера высокой готовности для вызовов ham_action_fail_*().
/
) или имеет значение NULL
. Не удалось подключиться к HAM. Это происходит, когда процесс, открывший соединение (используя ham_connect()), и процесс, вызывающий ham_action_execute(), не совпадают. _POSIX_PATH_MAX
(определено в <limits.h>
). Обратите внимание, что общая длина имени объекта/условия/действия также ограничена _POSIX_PATH_MAX
. В дополнение к вышеуказанным ошибкам HAM возвращает любую ошибку, с которой он сталкивается при обслуживании данного запроса.
ЗОСРВ «Нейтрино»
ham_action_execute(), ham_action_notify_pulse(), ham_action_remove(), ham_action_restart(), ham_action_waitfor(), ham_condition()
Предыдущий раздел: Менеджер высокой готовности (HAM)