Seite 1 von 1

pipe und Win NT

Verfasst: Dienstag 15. November 2005, 10:25
von mr.hide
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

Verfasst: Dienstag 15. November 2005, 15:43
von Joghurt
Wahrscheinlich gibt die NT-Version die Fehlermeldung auf stderr aus. In diesem Falle suchst du os.popen4.