-
Похожий контент
-
- 0 ответов
- 556 просмотров
-
- 1 ответ
- 850 просмотров
-
- 1 ответ
- 691 просмотр
-
- 3 ответа
- 906 просмотров
-
- 9 ответов
- 1 615 просмотров
-
- 0 ответов
- 704 просмотра
-
- 0 ответов
- 4 240 просмотров
-
- 0 ответов
- 503 просмотра
-
Как добавить в приложение проверку наличия соединения с Интернетом?
От Delpher-X,
- delphi
- delphi rio
- (и ещё 4 )
- 17 ответов
- 5 493 просмотра
-
- 7 ответов
- 1 388 просмотров
-
-
Последние посетители 0 пользователей онлайн
- Ни одного зарегистрированного пользователя не просматривает данную страницу
Вопрос
Евгений Корепов
Я написал класс для демонизации приложения в linux. Класс форкает процесс, обрабатывает поступающие сигналы и передает их в основной поток через потокобезопасную очередь.
Исходники https://github.com/EvgeniyKorepov/LinuxDaemon
Для использования просто подключите модуль UnitDaemon в свое консольное приложение:
program DaemonTest; {$APPTYPE CONSOLE} uses System.SysUtils, System.IOUtils, System.SyncObjs, Posix.Stdlib, Posix.SysStat, Posix.SysTypes, Posix.Unistd, Posix.Signal, Posix.Fcntl, Posix.Syslog in 'Posix.Syslog.pas', UnitDaemon in 'UnitDaemon.pas'; var AEventType : TEventType; begin syslog(LOG_NOTICE, 'main START'); while True do begin syslog(LOG_NOTICE, 'main LOOP'); if UnitDaemon.QueueEvent.PopItem(AEventType) = System.SyncObjs.TWaitResult.wrSignaled then begin syslog(LOG_NOTICE, 'main UnitDaemon.QueueEvent.PopItem'); case AEventType of TEventType.StopProcess : begin syslog(LOG_NOTICE, 'main Event StopProcess'); ExitCode := EXIT_SUCCESS; exit; end; TEventType.Start : begin syslog(LOG_NOTICE, 'main Event START'); end; TEventType.Reload : begin // Reload config syslog(LOG_NOTICE, 'main Event RELOAD'); end; TEventType.Stop : begin syslog(LOG_NOTICE, 'main Event STOP'); ExitCode := EXIT_SUCCESS; exit; end; end; end; Sleep(50); end; end.
Так же поддерживается systemd - для этого положите DaemonTest.service в /etc/systemd/system/ и используйте :
systemctl start DaemonTest.service systemctl reload DaemonTest.service systemctl stop DaemonTest.service
Ссылка на комментарий
2 ответа на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.