pipe und Win NT

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.
Antworten
mr.hide
User
Beiträge: 108
Registriert: Montag 29. August 2005, 14:02

Hallo,

ich habe folgenden Code:

Code: Alles auswählen

       
class Thread(threading.Thread):
    
    def __init__(self, argtupel, logfile, timelog):
        threading.Thread.__init__(self)
         ....

   
    def run(self):
        ....
        foundfailure = 0
        while foundfailure != -1:
            # Call command
            streamOut = os.pipe()

            streamOut = os.popen("chdir " + folder)
            streamOut = os.popen(command)

            #if no success this message would be found
            #else it cant be found = -1
            output = streamOut.read()
	    
            print output

            if output.find("error") != -1 or output.find("Failed") != -1:
                 foundfailure = 0
               
                 print "no license free"

                 # wait 10 sec, before starting a new try
                 time.sleep(10)
            else:
                 foundfailure = -1
Ich brauche das ganze um mehrere Threads parallel laufen zu lassen, die dann ein Programm aufrufen von dem nur gewisse Lizenzen vorhanden sind, wenn der Output sagt error failed to get licence oder so, dann soll er 10 sec warten bis es klappt.

nun meine Probleme:
auf Win xp klappt es.
nur auf Win NT läuft das Programm einfach durch, d.h. streamOut = os.popen(command) erzeugt die Meldund dass keine Lizenz da ist, dennoch wird nicht foundfailure = 0 aufgerufen und er beendet diesen Thread.


print output
Auch dies gibt nichts zurück.
Was aber unter XP auch nicht klappt, irgendwie hab ich das Gefühl das liegt an den Threads ...


Letztendlich denke ich wird er vielleicht eine andere Pipe brauchen, oder?


mfg
Matthias
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Wahrscheinlich gibt die NT-Version die Fehlermeldung auf stderr aus. In diesem Falle suchst du os.popen4.
Antworten