Wie Daemon (Service) benachrichtigen?

Antworten
Antrepolit
Beiträge: 340
Registriert: Di 12. Sep 2006, 08:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Wie Daemon (Service) benachrichtigen?

Beitrag von Antrepolit »

Hallo.

Die Daemons unter Lazarus haben ja den Eventhandler HandleCutsomCode.
Wie kann ich nun aus einer Anwendung ein (benutzerdefiniertes) Signal an meinen Daemon senden, damit er anfängt etwas zu tun?

Das Internet liefert mir leider keine (brauchbaren) Hinweise.
Grüße, Antrepolit

care only if your os is really burning

carli
Beiträge: 657
Registriert: Sa 9. Jan 2010, 17:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
CPU-Target: 64Bit

Re: Wie Daemon (Service) benachrichtigen?

Beitrag von carli »

InterProcess-Communication heißt das Zauberwort.

Die Units ipc oder simpleipc gibts dafür und das läuft im Prinzip so ab, dass du einen Server und einen oder mehrere Clients hast und die sich Strings hin- und herschicken.

Antrepolit
Beiträge: 340
Registriert: Di 12. Sep 2006, 08:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Re: Wie Daemon (Service) benachrichtigen?

Beitrag von Antrepolit »

Mit dem Simple IPC Server / Client geht es nicht.
Der Server in meinen Daemon gezogen, den Client in ein anderes Projekt in ein Form.
Mit zwei Forms geht es, aber der Daemon Server ist angeblich nicht aktiv (ist er aber doch).
Das scheint wohl nicht zu gehen.

Oder gibt es da was besseres?

Gruß
Grüße, Antrepolit

care only if your os is really burning

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Wie Daemon (Service) benachrichtigen?

Beitrag von mschnell »

Vermutlich liegt es an irgendwelchen Rechten, wenn SimpleIPC mit einer Anwendung geht, mit dem Dienst aber nicht. Der Dienst läuft ja vermutlich als root, also unter einem anderen User als die Anwendung.

Der Klassiker in Linux sind Pipes.

Ein Linux Signal-Handler ist natürlich auch möglich aber hier werden keine Daten übertragen sondern eben nur die Information, dass jemand das Signal gesetzt hat.

-Michael

Antrepolit
Beiträge: 340
Registriert: Di 12. Sep 2006, 08:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Re: Wie Daemon (Service) benachrichtigen?

Beitrag von Antrepolit »

Ich habe das Global-Flag des IPCServers aber auf true gesetzt. Der Doku nach verstehe ich das so, dass nun alle Benutzer den IPCServer benachrichtigen können sollten.

Von irgendwelchen Linux-Handlern habe ich keine Ahnung, will ich auch nicht einsetzen, da mein Dienst nur Windows-Probleme lösen soll.

Gruß

Edit1: Also an dem Benutzer des Dienstes liegt es nicht. Auch unter meinem eigenen Benutzerkonto ist der IPCServer "nicht aktiv".
ControlService von Delphi kann zwar die Standard (Start, Stopp, ...) Signale übermitteln, aber die Custom-Signale (von 128-255)
werden nicht behandelt. Seltsam: ControlService sendet ein Steuer-"Byte", aber der Signalhandler behandelt ein DWord. Da muss doch was schief laufen, oder?
Grüße, Antrepolit

care only if your os is really burning

carli
Beiträge: 657
Registriert: Sa 9. Jan 2010, 17:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
CPU-Target: 64Bit

Re: Wie Daemon (Service) benachrichtigen?

Beitrag von carli »

Antrepolit hat geschrieben:Von irgendwelchen Linux-Handlern habe ich keine Ahnung, will ich auch nicht einsetzen, da mein Dienst nur Windows-Probleme lösen soll.


Das macht ja auch der IPC-Server für dich.
Oder woran liegt das? Dass du nicht in der Lage bist, ein Objekt ohne zugehöriges Formular zu erstellen?

Antrepolit
Beiträge: 340
Registriert: Di 12. Sep 2006, 08:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Re: Wie Daemon (Service) benachrichtigen?

Beitrag von Antrepolit »

carli hat geschrieben:
Das macht ja auch der IPC-Server für dich.
Oder woran liegt das? Dass du nicht in der Lage bist, ein Objekt ohne zugehöriges Formular zu erstellen?


@Carli: Dein Lösungsvorschlag funktioniert nun mal nicht. Und Beleidigungen zeugen nicht von Kompetenz.
Ich arbeite mit Windows, nicht mit Linux.

Gruß
Grüße, Antrepolit

care only if your os is really burning

carli
Beiträge: 657
Registriert: Sa 9. Jan 2010, 17:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
CPU-Target: 64Bit

Re: Wie Daemon (Service) benachrichtigen?

Beitrag von carli »

Antrepolit hat geschrieben:
carli hat geschrieben:
Das macht ja auch der IPC-Server für dich.
Oder woran liegt das? Dass du nicht in der Lage bist, ein Objekt ohne zugehöriges Formular zu erstellen?


@Carli: Dein Lösungsvorschlag funktioniert nun mal nicht. Und Beleidigungen zeugen nicht von Kompetenz.
Ich arbeite mit Windows, nicht mit Linux.

Gruß


Soweit ich weiß, sind (fast) alle Komponenten in Lazarus plattformunabhängig.

Antrepolit
Beiträge: 340
Registriert: Di 12. Sep 2006, 08:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Re: Wie Daemon (Service) benachrichtigen?

Beitrag von Antrepolit »

Das Problem besteht nach wie vor, wollte es nur nochmal erwähnt haben.
Grüße, Antrepolit

care only if your os is really burning

Antworten