Erstellen eines Daemons und unix

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Benutzeravatar
theo
Beiträge: 10890
Registriert: Mo 11. Sep 2006, 19:01

Re: Erstellen eines Daemons und unix

Beitrag von theo »

DD50 hat geschrieben:
theo hat geschrieben:Du kannst sicher auch einen Linux spezifischen Code "zu Fuss" schreiben wie in C.
Das werde ich wohl müssen. Ich dachte nur es gäb sowas als "missbrauchbares" example.
Wieso? Warum verwendest du nicht Lazdaemon?

DD50
Beiträge: 27
Registriert: Do 13. Sep 2012, 12:48

Re: Erstellen eines Daemons und unix

Beitrag von DD50 »

theo hat geschrieben:Wieso? Warum verwendest du nicht Lazdaemon?
Das versuche ich grade. Wenn ich nicht weiterkommen sollte, warum auch immer, melde ich mich nochmal.

Gruss und danke

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: Erstellen eines Daemons und unix

Beitrag von mschnell »

DD50 hat geschrieben: kann ja ... auch einen restart usw.
Kannst Du 'mal erklären was genau Du damit meinst ? Möglicherweise habe ich Dich ja falsch verstanden.

-Michael

DD50
Beiträge: 27
Registriert: Do 13. Sep 2012, 12:48

Re: Erstellen eines Daemons und unix

Beitrag von DD50 »

@mschnell
Naja, was heisst falsch verstanden. Ich möchte halt mit dem Daemon kommunizieren. Oder aber wenn ich die .conf für mein prg ändere einfach einen z.b. SIGUSR1 schicken, und er lädt das neu.

EDIT: Und was fast noch wichtiger ist, das ding mit -TERM sauber beenden!!

Ich weiss das man es auch anders lösen könnte. z.B. über flags (touch /tmp/.myreaload) die man dann in der hauptschleife abfragt. Aber das finde ic nicht sooo sauber.

Zurück zum Topic:
Also unter Lazarus kann man KEINEN *nix Daemon erstellen. Da kommt einfach ein Windows Dienst raus der logischerweise auf unix nicht lauffähig ist. Für alle die sowas suchen hänge ich eine Demo mit dran. Das sind nur ein paar zeilen. Da sollte jeder durchblicken.

Gruss

Stichwörter: Lazarus Daemon Unix Linux Example
Dateianhänge
daemon.tar.gz
Ein *nix Daemon.
(2.55 KiB) 83-mal heruntergeladen

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: Erstellen eines Daemons und unix

Beitrag von mschnell »

DD50 hat geschrieben:@mschnell
Naja, was heisst falsch verstanden. Ich möchte halt mit dem Daemon kommunizieren. Oder aber wenn ich die .conf für mein prg ändere einfach einen z.b. SIGUSR1 schicken, und er lädt das neu. Und was fast noch wichtiger ist, das ding mit -TERM sauber beenden!!
Ich weiss das man es auch anders lösen könnte. z.B. über flags (touch /tmp/.myreaload) die man dann in der hauptschleife abfragt. Aber das finde ic nicht sooo sauber.
OK das hatte ich tatsächlich falsch verstanden. Ich dachte, das Ding sollte automatisch wieder gestartet werden, wenn es sich aus irgendeinem Grund beendet. Das geht - wie gesagt - über initab (und dann braucht das Ding auch selber keine Vorkehrungen dafür zu treffen, eine Daemon zu werden.

Klar kannst Du deinem Programm ein Signal schicken, um es zu veranlassen, die ini-Datei neu zu lesen. Einfacher ist es u.U. aber, das Directory zu überwachen (das geht in Linux auch, indem man auf eine spezielle Datei orcht und sie mit einem einfachen Lesebefehl bearbeitet) und bei Änderungen die ini-Datei neu einliest.

Das beenden kannst Du (z.B.) so ähnlich machen indem irgendjemand eine bestimmte Datei in ein bestimmtes (überwachtes) Directory schreibt. Das Programm löscht die dann und beendet sich. Datei-Bearbeitung finde ich ziemlich "sauber".
DD50 hat geschrieben:Zurück zum Topic ...
So richtig habe ich nicht verstanden, was gegen den Aufruf mit "&" spricht.
"Aus dem vollen" geht das natürlich prima mit fork().
Eine andere Variante wäre ein separates Start-Programm (wie "StartLazarus").

-Michael
Zuletzt geändert von mschnell am Mi 19. Sep 2012, 14:44, insgesamt 1-mal geändert.

Benutzeravatar
theo
Beiträge: 10890
Registriert: Mo 11. Sep 2006, 19:01

Re: Erstellen eines Daemons und unix

Beitrag von theo »

DD50 hat geschrieben: Zurück zum Topic:
Also unter Lazarus kann man KEINEN *nix Daemon erstellen. Da kommt einfach ein Windows Dienst raus der logischerweise auf unix nicht lauffähig ist.
Wie kommst du darauf? Das hier hat doch mit Windows nichts zu tun:
http://svn.freepascal.org/cgi-bin/viewv ... iew=markup" onclick="window.open(this.href);return false;

DD50
Beiträge: 27
Registriert: Do 13. Sep 2012, 12:48

Re: Erstellen eines Daemons und unix

Beitrag von DD50 »

Hmm, also bei kommt immer ein Windows-Teil raus.

Code: Alles auswählen

Usage: /tmp/project1 [command]
Where command is one of the following:
  -i --install   To install the program as a service
  -u --uninstall To uninstall the service
  -r --run       To run the service

Benutzeravatar
theo
Beiträge: 10890
Registriert: Mo 11. Sep 2006, 19:01

Re: Erstellen eines Daemons und unix

Beitrag von theo »

Das scheint die Showhelp Funktion in daemonapp.pp zu sein.
Die sollte bei Linux wahrsch. nicht erscheinen, aber es ist ja nur ein Stück Text.
Daraus kannst du nicht schliessen, dass es kein Unix Daemon ist.

Die Eigentliche Funktionalität lauft mMn sowieso in einem extra Thread.

DD50
Beiträge: 27
Registriert: Do 13. Sep 2012, 12:48

Re: Erstellen eines Daemons und unix

Beitrag von DD50 »

Ich weiss nun nicht wie ich es sagen soll. Das teil hat keinerlei funktion. Am besten einfach mal selber probieren.............

Das spart viel tipperei!

Benutzeravatar
theo
Beiträge: 10890
Registriert: Mo 11. Sep 2006, 19:01

Re: Erstellen eines Daemons und unix

Beitrag von theo »

DD50 hat geschrieben:Am besten einfach mal selber probieren.............

Das spart viel tipperei!
Joh, Ist mir eigentlich auch egal was du da machst.

DD50
Beiträge: 27
Registriert: Do 13. Sep 2012, 12:48

Re: Erstellen eines Daemons und unix

Beitrag von DD50 »

theo hat geschrieben:Joh, Ist mir eigentlich auch egal was du da machst.
Sehr erwachsen die reaktion....

Benutzeravatar
theo
Beiträge: 10890
Registriert: Mo 11. Sep 2006, 19:01

Re: Erstellen eines Daemons und unix

Beitrag von theo »

Du hast mir für deine 15 Postings in diesem Forum einfach ein bisschen eine zu grosse Klappe.
Das hilft dir auch nicht wirklich weiter.

gocher
Beiträge: 298
Registriert: Di 23. Nov 2010, 23:41
OS, Lazarus, FPC: Ubuntu/Win, Lazarus trunk, FPC trunk
CPU-Target: 32Bit/64Bit
Wohnort: Geldern
Kontaktdaten:

Re: Erstellen eines Daemons und unix

Beitrag von gocher »

Sieh Dir doch mal http://www.lazarusforum.de/viewtopic.php?f=55&t=5495" onclick="window.open(this.href);return false; an.
MfG Gocher
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: Erstellen eines Daemons und unix

Beitrag von Scotty »

DD50 hat ja schon eine Lösung gepostet - besten Dank dafür - und meint, dass das Daemon-Beispiel unter Linux nicht läuft. Ich habe das eben probiert (den {$Error 2.7.1} hab ich einfach auskommentiert) und bekomme ein executable.

Code: Alles auswählen

file ./cleandirs
cleandirs: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.4.0, not stripped

Code: Alles auswählen

ldd ./cleandirs
linux-vdso.so.1 (0x00007fff365ff000)
libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007fd7bd54e000)
libdl.so.2 => /usr/lib/libdl.so.2 (0x00007fd7bd34a000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007fd7bcfa3000)
/lib64/ld-linux-x86-64.so.2 (0x00007fd7bd76a000)
PS: Lazarus 1.1 r38679M FPC 2.6.0 x86_64-linux-qt

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: Erstellen eines Daemons und unix

Beitrag von mschnell »

DD50 hat geschrieben:Also unter Lazarus kann man KEINEN *nix Daemon erstellen. Da kommt einfach ein Windows Dienst raus
????

Wenn Du mit Lazarus auf Linux kompilierst müsstest Du speziell cross compiling Tools installiert haben, um ein Windows-Programm bzw einen Windows Dienst zu erzeugen. Hast Du das ?

-Michael

Antworten