Page 1 of 1

Daemon nach X-Server starten

Posted: 22. Mar 2007 21:35
by Elmey
Hi,

ich möchte einen (zugegebenermaßen sehr speziellen) Daemon mit root-Rechten nach dem X-Server starten, also wenn zumindest der Loginscreen von KDE oder konsorten erschienen ist. Mit einem Initscript in /etc/init.d funktioniert das nicht - wie also ist sowas zu realisieren?

Ein KDE-Autostart oder ähnliches Bringt mir auch nix, da das User-Abhängig ist...

Elmey

Posted: 23. Mar 2007 8:34
by hjb
Hi,

warum sollte das nicht gehen? KDM wid doch auch über ein Init-Skript gestartet oder lässt sich zumindest so einrichten. Liegt es an den Zugriffsrechten, dass also dem Daemon der Zugriff aufs Display verwehrt wird? Da hilft vielleicht ein xhost in einem Startskript des Displaymanagers, aber da kenne ich mich auch nicht so genau aus.

Grüße,
hjb

Posted: 23. Mar 2007 10:11
by Janka
Solche Aufrufe kommen in das "Xsetup" des xdm/kdm. Dies ist normalerweise die Datei /etc/X11/xdm/Xsetup

Damit du nicht bei jedem Start von X einen weiteren Daemon startest, solltest du prüfen, ob dieser schon läuft. Normalerweise macht man dies über eine pid-Datei in /var/run.

Falls du kdm benutzt, kannst du /opt/kde3/share/config/kdm/kdmrc auch eine andere Datei spezifizieren.

Janka

Posted: 26. Mar 2007 5:54
by Elmey
Thx für die Hilfe.
Janka wrote:Solche Aufrufe kommen in das "Xsetup" des xdm/kdm. Dies ist normalerweise die Datei /etc/X11/xdm/Xsetup
Ich nehme mal an, Xsetup_0 bei FC 6 ist das gleiche!?

Prinzipiell ist das Verfahren natürlich unpratkisch dort was automatisiert in die Datei zu schreiben da man bei jeder installation erst prüfen muss, ob schon was drinsteht.

Posted: 26. Mar 2007 15:15
by Janka
Das ist das Xsetup, speziell für das Display :0, also den ersten lokalen Xserver.

Einen Daemon zu bauen, der zwingend X benötigt, ist sowieso ganz schlechter Programmierstil. Ich kenne so etwas von dem mitgelieferten USV-Treiber der Mustek-PowerMust-Serie -- Schrott. Zum Glück gibt es ja "nut", und da ist inzwischen ein brauchbarer Treiber reverse-engineered worden.

So etwas solltest du also nicht selbst bauen. Teile das Programm in einen Daemon, der nur über Pipes bzw. Sockets kommuniziert, und eine GUI, die den aktuellen Status des Daemons via Pipe/Socket anzeigen und verändern kann.

Erscheint vielleicht anfangs aufwendiger, erzeugt aber wesentlich weniger Probleme.

Janka

Posted: 02. Apr 2007 21:34
by Elmey
Naja, es ist kein Daemon im klassischen Sinne, er reagiert vielmehr auf Ereignisse die vom User verursacht werden und gibt Feedback auf die Oberfläche unter verwendung von QT. Sprich ohne einen X-Server/Windowmanager könnte man diesen Daemon sowieso nicht sinnvoll verwenden.