У меня проблемы с пониманием модели Systemd для уведомлений и нескольких рабочих процессов.Системные уведомления происходят с использованием интерфейса sd_notify (3)
.Интерфейсы sd_notify (3)
предоставляют демону возможность сообщить systemd о его состоянии:
#include <systemd/sd-daemon.h>
int sd_notify(int unset_environment,
const char *state);
int sd_notifyf(int unset_environment,
const char *format,
...);
...
Если я правильно разбираю man-страницу, демон должен вызвать sd_notify(0, "READY=1\n");
, как только она запущена и готова к обработкеданные.И когда он останавливается, он должен вызвать sd_notify(0, "STOPPING=1\n");
.
Вот один из рабочих процессов, с которыми у меня возникают проблемы.Я не вижу, как Systemd доставляет демону сообщение «1012 *« обновить ваш статус », чтобы об этом можно было сообщить пользователю через systemctl status
.
systemctl status mydaemon.service
Другой рабочий процесс IУ меня проблемы с выключением.Я не понимаю, как Systemd доставляет демону сообщение о завершении работы.
В обоих случаях мне кажется, что мой исполняемый файл должен экспортировать функцию, а Systemd должен вызывать ее для запросов и сообщений.
Как Systemd сообщает демону о своем статусе или завершении работы?