kindprozess auf hoher prioritaet UND auf terminierung warten?



  • hi,

    ueberschrift sagts.
    ich bin in der konsole.
    bisher hab ich mit createprocess ein kind gestartet. diese kind schreibt in die konsole, aber vorher hat die shell noch die chance, das naechste prompt zu schreiben. dadurch sieht die ausgabe sehr vermurkst aus. ich tippe darauf, dass mein elternprozess nicht aufs kind wartet und gleich die ausfuehrung an die shell weitergibt, waehrend das kind in die gleiche konsole wie die shell schreibt.
    waitforinputidle bringt nichts.

    ideen?



  • jemand ne idee?



  • Also hast de das so:
    Start Konsole
    Single Shell Input
    Start Kind-Prozess
    WarteAufKind
    ShellInput

    Oder wie soll das aussehen?



  • deinen pseudocode versteh ich leider nicht, aber ich geb mal eine pseudosession und reale session in der shell:

    # reale session, wie es jetzt ist
    F:\Projects\run>run -pri realtime python -c "print 'foobar'"
    
    F:\Projects\run>foobar
    run -pri realtime python -c "print 'foobar'"
    
    F:\Projects\run>foobar
    echo baz
    baz
    
    F:\Projects\run>
    
    # so will ich das haben
    F:\Projects\run>run -pri realtime python -c "print 'foobar'"
    foobar
    
    F:\Projects\run>run -pri realtime python -c "print 'foobar'"
    foobar
    
    F:\Projects\run>echo baz
    baz
    
    F:\Projects\run>
    

    die run.exe (meine kreation) wartet nicht auf den kindprozess, solls aber. ich MUSS aber die prozessprioritaet setzen koennen, wie schon oben spezifiziert.

    so verstaendlich?


  • Mod

    Du musst in Deinem Porzess den Kind Prozess starten und auf dessen Terminierung warten!



  • statt
    run -pri realtime
    nimm
    start /wait



  • volkard, ich will keine neue konsole oeffnen.
    selbst mit "start /b /wait" (/b fuer "keine neue konsole") kommt haargenau der selbe effekt... wie kann ich auf die terminierung warten?

    macht mal einer was gegen diesen troll namens "martin richter" bitte?


  • Mod

    c.rackwitz schrieb:

    macht mal einer was gegen diesen troll namens "martin richter" bitte?

    Was ist mein Vergehen, dass ich bei Dir als Troll rangiere?

    Mein Kommentar war so gemeint: Du erzeugst mit CreateProcess einen neuen Prozess. Wenn Du nun einfach mit WaitForSingleObject auf das Ende dieses Prozesses wartest müsste doch alles OK sein. Denn dadurch werden die Ausgagen in meinen Augen synchron.



  • Martin Richter schrieb:

    WaitForSingleObject

    das haettest du frueher sagen koennen, denn genau diese information fehlte mir. dein erster post in diesem thread hat schliesslich nur mein problem wiederholt...

    ich muss noch etwas rumforschen, denn funktionieren tuts noch nicht. aber mal sehen...

    edit: es funzt nun. danke!

    kurzer code:

    CreateProcess(...&processinfo); ... WaitForSingleObject(processinfo.hProcess, INFINITE);
    


  • bei mir geht folgendes prima:
    main.bat:

    start /b /wait sub.bat
    echo fertig
    

    sub.bat:

    dir /s \
    exit
    

Anmelden zum Antworten