Anzeige:
Ergebnis 1 bis 6 von 6

Thema: prozess erfolgreich aufgerufen und beendet?

  1. #1
    Registrierter Benutzer
    Registriert seit
    24.08.2004
    Beiträge
    749

    prozess erfolgreich aufgerufen und beendet?

    Hallo.
    ich starte über einen Button über QProcess ein anderes Programm welches mir etwas tut. Wen man das programm einfach so aufruft aus der Konsole gibt es bei Fehlern Meldungen aus.
    Wenn ich es aber per Button über QProcess aufrufe wird das Programm auf jeden Fall aufgerufen. Wie kann ich denn in der GUI dann darauf abtesten ob das Programm korrekt durchgelaufen ist oder ob ein Fehler aufgetreten ist ?

    Gibt es da irgendwie eine Vorgehensweise ?

    Danke

  2. #2
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Siehe QProcess::exitStatus

    In der Bash wäre das Äquivalent $?

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  3. #3
    Registrierter Benutzer
    Registriert seit
    24.08.2004
    Beiträge
    749
    Ich habe folgendes Problem:
    ich starte einen Process über process->start.
    Das funktioniert einwandfrei.
    Jetzt ist es so dass der Prozess files generiert.
    In meinem Programm kann ich jetzt nicht darauf testen ob die files existieren oder nicht weil ja nach start() sofort weitergearbeitet wird und das Programm immer schneller beendet als die files auf der Platte erscheinen die der Prozess generiert hat.
    Wenn ich aber ne while schleife anlege so dass ich solange warte bis der Prozess fertig ist geht das. while(process->isRunning()) continue;
    so in der art.
    Das funktioniert auch..........vorausgesetzt der Prozess bekommt korrekte Eingabe.
    Wenn jetzt falsche Eingabe übergeben wird an den Prozess bekomme ich eine Endlosschleife!

    Wieso dass den?
    Das ist seltsam denn wenn ich ohne die schleife arbeite und falsche eingabe mache terminiert er sofort. Der Prozess wird dann sofort beendet auch unter ps -e als UNix command.

    Macht es da Sinn sowas wie nen time-out anzusetzen und nach z.B 10 Sekunden hart zu kill() aufzurufen ?

  4. #4
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Einen Slot auf das QProcess Signal processExited connecten und erst dort auf die Files checken.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  5. #5
    Registrierter Benutzer
    Registriert seit
    24.08.2004
    Beiträge
    749
    Danke so funktionierts ja....
    Gibt es nun doch noch so eine Art Möglichkeit dass ich alle 30 Sekunden dem user eine Möglichkeit geben sollte dass er durch eine MessageBox den Prozess killen kann ? Mit time.start und dann in ner schleife laufen lassen und immer testen ob elapsed() == 30000 funktioniert nicht korrekt...
    Bei meinem Prog kann es durch aus vorkommen dass der aufgerufene Prozess mehr als 30 sekunden braucht....aber es kann auch vorkommen dass endlosschleifen entstehen ....desewegen diese Option. Nur wie ?

  6. #6
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Du brauchst das ansich nicht mit einer Zeit zu verknüpfen.

    Wenn du einen Button zum Abbrechen der Operation hast, kannst du ihn theoretisch direkt mir dem kill() Slot des QProcess verbinden.

    Du könntest während der Operation einen QProgressBar durch einen QTimer "laufen" lassen, d.h. als TotalSteps 0 eintragen.

    Oder als Kombination einen QProgressDialog einsetzen und dessen cancelled() Signal als kill() Partner benutzen.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •