/proc/..../environ lesen

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.
Benutzeravatar
hans
User
Beiträge: 728
Registriert: Sonntag 22. September 2002, 08:32
Wohnort: Sauerland
Kontaktdaten:

/proc/..../environ lesen

Beitragvon hans » Dienstag 15. Oktober 2002, 19:02

Wie lese ich /proc/ ...... /environ? ... ist durch die Prozessnummer zu ersetzen.

Die Datei (ich bezeichne die mal als solche) enthält lauter Variablen der Form VARIBLE=WERT. Die Einträge sind durch Hex 00 getrennt. Mich interessiert insbesondere der Eintrag DISPLAY=

Hans
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Dienstag 15. Oktober 2002, 19:51

Code: Alles auswählen

envfile = open("/proc/.../environ")
environ = envfile.read().split("\x00") # Daten lesen und in Liste aufsplitten an allen '\x00'
envfile.close()

displaydef = filter(lambda x: x[:8]=="DISPLAY=", environ)[0] # Datum mit "DISPLAY=" am Anfang ausfiltern
# Ergebnis ist eine Liste mit nur einem Eintrag, darum das [0] am Ende, wir brauchen ja nur den String

display = displaydef[8:] # X-Display extrahieren
# display enthält jetzt in der Regel ':0'


Dookie
Benutzeravatar
hans
User
Beiträge: 728
Registriert: Sonntag 22. September 2002, 08:32
Wohnort: Sauerland
Kontaktdaten:

Beitragvon hans » Dienstag 15. Oktober 2002, 19:55

Dookie hat geschrieben:[code]environ = envfile.read().split("\x00") # Neuland für mich. Gibts nicht in Delphi.

#und das auch nicht.......
displaydef = filter(lambda x: x[:8]=="DISPLAY=", environ)[0] # Datum mit "DISPLAY=" am Anfang ausfiltern


THX
Werde mir das mal reinziehen.

Hans
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Mittwoch 16. Oktober 2002, 16:43

Ich habe mal ein kleines Script aus dem obigen Fragment erstellt.

Code: Alles auswählen

#!/usr/bin/python

def get_environ(procID):
    """
    '/proc/.../environ' lesen und in Liste aufsplitten
    die einzelnen Einträge sind durch '\\x00' getrennt.
    Am Ende ein Dictionary mit den Einträgen erstellen.
    """
    envfile = open("/proc/"+str(procID)+"/environ","r")
    envdata = envfile.read().split("\x00") # lesen und gleich in liste aufsplitten
    envfile.close()
   
    # daraus jetzt ein Dictionary machen
    result = {}
    for item in envdata:
        if item:
            key, data = item.split("=") # Eintrag an = in Schlüssel und Datum aufsplitten
            result[key.strip()] = data.strip() # Eintrag in result-Dictionary einfügen
    return result

if __name__ == "__main__": # als Script direkt aufgerufen
    import sys
   
    if len(sys.argv) == 2: # Aufruf: getenviron.py processID
        environ = get_environ(sys.argv[1])
        keys = environ.keys()
        keys.sort()
        for key in keys:
            print key, "=", environ[key]

    elif len(sys.argv) == 3: # Aufruf: getenviron.py processID key
        environ = get_environ(sys.argv[1])
        key = sys.argv[2].upper()
        print key, "=", environ[key]

    else: # Aufruf: ohne oder mit mehr als 2 Parametern
        print "usage:", sys.argv[0], "processID [key]"



Gruß

Dookie
Benutzeravatar
hans
User
Beiträge: 728
Registriert: Sonntag 22. September 2002, 08:32
Wohnort: Sauerland
Kontaktdaten:

Beitragvon hans » Mittwoch 16. Oktober 2002, 17:29

Hi Dookie, habe auch schon ne lauffähige Lösung. Stecke nur gerade vor einer schwerwiegenden Entscheidung was ich heute machen soll

  • C.oden oder
  • SuSE 8.1 aufspielen?


Ich glaub ich entscheide mich mal für letzteres.

Hans
piddon
Gründer
Beiträge: 410
Registriert: Dienstag 30. Juli 2002, 18:03
Wohnort: Oestrich-Winkel
Kontaktdaten:

Beitragvon piddon » Mittwoch 16. Oktober 2002, 17:49

:D

Wie wäre es mit:
  1. Suse aufspielen
  2. Danach Coden
irc: #python.de @ irc.freenode.net | python-wiki | python-forum FAQ
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Mittwoch 16. Oktober 2002, 17:57

Ich weiß was besseres

Debian aufspielen und sich an nem stabilen System freuen :)


Dookie
Benutzeravatar
hans
User
Beiträge: 728
Registriert: Sonntag 22. September 2002, 08:32
Wohnort: Sauerland
Kontaktdaten:

Beitragvon hans » Mittwoch 16. Oktober 2002, 19:12

:cry: sieht so aus, als wenn Dookie gewonnen hätte :cry: habe nur noch ein raed only Filesystem.

Bin gerade im Versuch Nummer 2

Gut, dass ich noch einen Reserverechner habe :lol:

Hans

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]