Seite 1 von 1

mit python herausfinden, ob X aktiv ist

Verfasst: Montag 7. Juni 2004, 13:39
von DER Olf
hi.
gibt es eine möglichkeit herauszufinden, ob X aktiv ist?
meine notlösung wäre:

Code: Alles auswählen

import os
...
if not os.system("startx"):
    ...
aber da gibt es doch sicher eine schönere lösung!

mfg

Olf

Re: mit python herausfinden, ob X aktiv ist

Verfasst: Montag 7. Juni 2004, 15:07
von joerg
DER Olf hat geschrieben:hi.
gibt es eine möglichkeit herauszufinden, ob X aktiv ist?
Was willst Du denn genau wissen? Ob auf dem lokalen Rechner ein oder mehrere X-Server laufen? Ob Dein Programm darauf zugreifen kann? Oder ob Dein Programm von einem bereits unter X laufenden Programm gestartet wurde, z.B. einer Shell im xterm?

Ich nehme jetzt mal letzteres an. Dafür kannst Du z.B. nachsehen, ob 'DISPLAY' in os.environ gesetzt ist. Das ist recht zuverlässig, aber auch nicht 100% sicher.

Jörg

Verfasst: Montag 7. Juni 2004, 18:09
von hans
Wenn ich ein ps jax aufrufe sehe ich u. a. folgende Zeile.

Code: Alles auswählen

/usr/X11R6/bin/X :0 -audit 0 -auth /var/gdm/:0.Xauth -nolisten t.....
Ist das nicht der eigentliche X Prozess, in diesem Fall für das DISPAY :0?

Bleibt nur zu klären, in wie weit das ganze Distributionsabhängig ist. Außerdem ist dieses von XFree86 abgeleitet. Wie sieht es aus, wenn statt dessen X.Org verwendet wird?

Hans

Verfasst: Montag 7. Juni 2004, 19:32
von DER Olf
es soll überprüft werden, ob X akriv ist, sonst bricht das programm mit einer meldung ab.

mfg

Olf

Verfasst: Montag 7. Juni 2004, 19:55
von fs111
Eine andere Möglichkeit wäre auszuwerten, was /sbin/runlevel zurückgibt, wenn das 5 ist, dann läuft X, das ist natürlich auch wieder nicht unbendingt portabel, weil das auf manchen Systemen eben nicht der X-Runlevel ist, aber auf jeden Fall eindeutiger als nach ausgaben in ps zu greppen.

fs111

Verfasst: Montag 7. Juni 2004, 20:24
von Dookie
Hallo,

ich denke die Environvariable $DISPLAY abzufragen ist wohl der compatibelste weg, bei mir is der runlevel z.B. 2 (Debian)


Gruß

Dookie

Verfasst: Montag 7. Juni 2004, 22:18
von oenone
versuch einfach, etwas darzustellen und fang die exceptions ab.
das ist 100% sicher und auch sehr sauber.
ausserdem funktioniert es dann auch mit windows und anderen plattformen.

auf bald
oenone

Verfasst: Dienstag 8. Juni 2004, 17:42
von DER Olf
ja, ist natürlich auch ne lösung, ich denke, dass ist der beste.
aber WELCHE exceptions :?: :?:

mfg

Olf