Page 1 of 1

dämonen erstellen

Posted: 21. Feb 2006 16:15
by dimevit
hallo zusammen,

kann mir jemand paar Links schicken, wo ich nachschauen kann, wie man dämonen erstellt.

Vielen Dank,
Dime

Re: dämonen erstellen

Posted: 21. Feb 2006 16:26
by Janka
dimevit wrote:hallo zusammen,
kann mir jemand paar Links schicken, wo ich nachschauen kann, wie man dämonen erstellt.
Anrufen kannst du die! Nicht erstellen - das ist nicht mal mit schwarzer Magie erreichbar. :P

Daemon-Prozesse sind ganz normale Prozesse, bei denen man die Ein- und Ausgaben in Dateien bzw. Pipes oder Sockets macht. Ein Programm wird also bloß dadurch zum Daemon, dass es ohne Benutzerinteraktion irgendetwas macht.

Ein ganz simpler Daemon ist z.B. ein Programm, das von cron aufgerufen wird und seine Ausgabe in eine Datei schreibt.

Viele Daemon-Prozesse werden auch über init-Skripte gestartet. Für Beispiele guckst du am besten mal im Verzeichnis /etc/init.d nach.

Janka

Posted: 21. Feb 2006 17:22
by dimevit
Hi Janka,

alldas ist mir klar, Aber ich will mir ein Dämon für Powermanagement programmieren, denn ACPID mir nicht. Mein Dämon soll Ereignisse abfangen und in ein von mir erstellten Runlevel wechseln. Ich brauch aber Tutorials wie man Dämone erstellen kann.

Danke,
dime

Posted: 21. Feb 2006 17:52
by Janka
dimevit wrote:Hi Janka,
alldas ist mir klar, Aber ich will mir ein Dämon für Powermanagement programmieren, denn ACPID mir nicht. Mein Dämon soll Ereignisse abfangen und in ein von mir erstellten Runlevel wechseln. Ich brauch aber Tutorials wie man Dämone erstellen kann.
Nochmal: Einen Daemon erstellt man, indem man ein Programm (kann auch ein beliebiges Skript sein) in den Hintergrund schickt (vom Kontrollterminal abkoppelt). :?

z.B. vi mydaemon

Code: Select all

#!/bin/bash
while : 
do
  echo X >>Xse
  sleep 1
done
Dann "nohup mydaemon &", und schon hast du einen Daemon, der Xse in die Datei Xse schreibt.

Was dein Problem mit acpid angeht: Du musst eigentlich nur ein Skript schreiben, das /proc/acpi/event zeilenweise ausliest, z.B. mit dem Shell-Builtin read

read </proc/acpi/event

und dann das Ergebnis in $REPLY auswertet. Read wartet übrigens selbst, man braucht also kein sleep oder so in der Schleife.

Code: Select all

#!/bin/bash
while &#58; 
do
  read </proc/acpi/event
  echo $REPLY  
done
So verständlicher?

Janka

Posted: 21. Feb 2006 18:07
by klopskuchen
Ich glaube du suchst nach "main(){ fork(); exit(); setsid(); chdir(); umask(); deine_funktion();}". Oder danach das "cmd &" doch ausreicht?

MfG, Klopskuchen

Posted: 21. Feb 2006 18:37
by dimevit
Danke für die Hilfe. Ich glaube ich komme weiter. Ich hätte noch eine Frage:
Beim Aufruf von cat /proc/acpi/event read bekomme ich die Meldung
bash: /proc/acpi/event: Das Gerät oder die Ressource ist belegt

dann habe ich acpid gestopt, bekamm ich keine Fehlermeldung aber ein Ergeniss hab ich auch nicht bekommen

Wisst ihr woran das liegen kann?

Danke
Dime

Posted: 22. Feb 2006 13:12
by Janka
dimevit wrote:Beim Aufruf von cat /proc/acpi/event read bekomme ich die Meldung
bash: /proc/acpi/event: Das Gerät oder die Ressource ist belegt

dann habe ich acpid gestopt, bekamm ich keine Fehlermeldung aber ein Ergeniss hab ich auch nicht bekommen

Wisst ihr woran das liegen kann?
acpid läuft wohl doch noch. Guck einfach nach, welches Programm die Datei noch geöffnet hat:

$ lsof | grep /proc/acpi/event

Janka