Ok, hocu da napisem svoj daemon, cisto eksperimenta radi hocu da napravim chat server u C# .net core 3.0 preview kao proof of concept. Sad, ja pokrenem listener thread, ali sta radim sa glavnim threadom koji sam dobio od systemd launchera?
U Windows svetu kad pravim servis ja sam obavezan da javim SCMu (Service Control Manager) koji me je i pozvao da je servis "ziv" i da potom uradim return i vratim thread SCMu. Ako to ne uradim (obe stvari), SCM ili prsne odmah ili timeout-uje start operaciju i ubije servisni proces pretpostavljajuci da je pokretanje servisa prslo.
Kako systemd to resava? Ako ja ne uradim return kako on zna da je moj servis ziv? Ako pogledam moj servis za mount, vidim da je proces exited, ali ako npr pogledam neki sistemski servis:
mmix@BlackWolf:~/projects/Helios/HeliosServer/Helios.Server$ systemctl status accounts-daemon.service
● accounts-daemon.service - Accounts Service
Loaded: loaded (/lib/systemd/system/accounts-daemon.service; enabled; vendor
Active: active (running) since Wed 2019-03-06 08:19:22 CET; 3h 20min ago
Main PID: 1356 (accounts-daemon)
Tasks: 3 (limit: 4915)
Memory: 7.5M
CGroup: /system.slice/accounts-daemon.service
└─1356 /usr/lib/accountsservice/accounts-daemon
Mar 06 08:19:22 BlackWolf systemd[1]: Starting Accounts Service...
Mar 06 08:19:22 BlackWolf accounts-daemon[1356]: started daemon version 0.6.45
Mar 06 08:19:22 BlackWolf systemd[1]: Started Accounts Service.
Njegov proces i dalje radi (sto i treba), ali systemd je svestan da je servis aktivan i zavrsio je sa podizanjem, ako neko ima Requires na ovaj servis bice pokrenut. Dakle, nekako postoji neka signalizacija, medjutim ja ne mogu da nadjem na netu nista o ovome.
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić