Wieso? Warum verwendest du nicht Lazdaemon?DD50 hat geschrieben:Das werde ich wohl müssen. Ich dachte nur es gäb sowas als "missbrauchbares" example.theo hat geschrieben:Du kannst sicher auch einen Linux spezifischen Code "zu Fuss" schreiben wie in C.
Erstellen eines Daemons und unix
Re: Erstellen eines Daemons und unix
Re: Erstellen eines Daemons und unix
Das versuche ich grade. Wenn ich nicht weiterkommen sollte, warum auch immer, melde ich mich nochmal.theo hat geschrieben:Wieso? Warum verwendest du nicht Lazdaemon?
Gruss und danke
-
- 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
Kannst Du 'mal erklären was genau Du damit meinst ? Möglicherweise habe ich Dich ja falsch verstanden.DD50 hat geschrieben: kann ja ... auch einen restart usw.
-Michael
Re: Erstellen eines Daemons und unix
@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
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
-
- 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
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.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.
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".
So richtig habe ich nicht verstanden, was gegen den Aufruf mit "&" spricht.DD50 hat geschrieben:Zurück zum Topic ...
"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.
Re: Erstellen eines Daemons und unix
Wie kommst du darauf? Das hier hat doch mit Windows nichts zu tun: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.
http://svn.freepascal.org/cgi-bin/viewv ... iew=markup" onclick="window.open(this.href);return false;
Re: Erstellen eines Daemons und unix
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
Re: Erstellen eines Daemons und unix
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.
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.
Re: Erstellen eines Daemons und unix
Ich weiss nun nicht wie ich es sagen soll. Das teil hat keinerlei funktion. Am besten einfach mal selber probieren.............
Das spart viel tipperei!
Das spart viel tipperei!
Re: Erstellen eines Daemons und unix
Joh, Ist mir eigentlich auch egal was du da machst.DD50 hat geschrieben:Am besten einfach mal selber probieren.............
Das spart viel tipperei!
Re: Erstellen eines Daemons und unix
Sehr erwachsen die reaktion....theo hat geschrieben:Joh, Ist mir eigentlich auch egal was du da machst.
Re: Erstellen eines Daemons und unix
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.
Das hilft dir auch nicht wirklich weiter.
-
- 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
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
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me
-
- 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
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.
PS: Lazarus 1.1 r38679M FPC 2.6.0 x86_64-linux-qt
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)
-
- 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
????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