mit python herausfinden, ob X aktiv ist

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
DER Olf
User
Beiträge: 283
Registriert: Mittwoch 24. Dezember 2003, 19:32

mit python herausfinden, ob X aktiv ist

Beitragvon DER Olf » Montag 7. Juni 2004, 13:39

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
joerg
User
Beiträge: 188
Registriert: Samstag 17. August 2002, 17:48
Wohnort: Berlin
Kontaktdaten:

Re: mit python herausfinden, ob X aktiv ist

Beitragvon joerg » Montag 7. Juni 2004, 15:07

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
"Sie sind nicht berechtigt, unrechtmäßige Kopien dieses Datenträgers zu erstellen." - Microsoft-Weisheit auf einer CD von MS-VisualC++-6.0
Benutzeravatar
hans
User
Beiträge: 728
Registriert: Sonntag 22. September 2002, 08:32
Wohnort: Sauerland
Kontaktdaten:

Beitragvon hans » Montag 7. Juni 2004, 18:09

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
DER Olf
User
Beiträge: 283
Registriert: Mittwoch 24. Dezember 2003, 19:32

Beitragvon DER Olf » Montag 7. Juni 2004, 19:32

es soll überprüft werden, ob X akriv ist, sonst bricht das programm mit einer meldung ab.

mfg

Olf
Benutzeravatar
fs111
User
Beiträge: 170
Registriert: Samstag 15. November 2003, 11:42
Kontaktdaten:

Beitragvon fs111 » Montag 7. Juni 2004, 19:55

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
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Montag 7. Juni 2004, 20:24

Hallo,

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


Gruß

Dookie
Benutzeravatar
oenone
User
Beiträge: 75
Registriert: Mittwoch 27. August 2003, 14:39
Wohnort: 49°17'28N, 8°15'57E
Kontaktdaten:

Beitragvon oenone » Montag 7. Juni 2004, 22:18

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
if you don't remember something, it never happened.
if you aren't remembered, you never existed.
i don't quite understand what love is like... but if there was someone who liked me, i'd be happy.
DER Olf
User
Beiträge: 283
Registriert: Mittwoch 24. Dezember 2003, 19:32

Beitragvon DER Olf » Dienstag 8. Juni 2004, 17:42

ja, ist natürlich auch ne lösung, ich denke, dass ist der beste.
aber WELCHE exceptions :?: :?:

mfg

Olf

Wer ist online?

Mitglieder in diesem Forum: Dembrix, Google [Bot]