tutorials.de Buch-Aktion 02/2012
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
709
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Stiffler66 Stiffler66 ist offline Rookie
    Registriert seit
    Jan 2010
    Beiträge
    8
    Hallo zusammen hab mal wieder eine frage und denke das die wirklich oft gestellt wird in verbindung mit dem Processbuilder.

    wie kann ich einem Processbuilder einen Timeout geben.
    Habe scripte die ausgeführt werden über einen Process, nun soll allerdings nur 50 sekunden auf diesen proCess gewartet werden.hat er länger als 50 sekunden keine rückmeldung gegeben so soll er den aktiven abbrechen.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    
     public synchronized int executeFile(File f)
     {
        .........................
     
                p=new ProcessBuilder(f.getAbsolutePath());
            System.out.println(f.getName());
            Process pro=null;
            InputStream es=null;
            InputStreamReader ir=null;
            try 
            {
                StringBuilder builder = new StringBuilder();
                pro = p.start();
                try 
                {
                    pro.waitFor();
                    pro.destroy();      //hier ein Timeout 50 sekunden
                } 
                catch (InterruptedException e){e.printStackTrace(); return 0;}
                if(pro.exitValue()==1)
                {
                    .......
                }
                else 
                {
                    ........
                }
                es = pro.getErrorStream();
                System.out.println("ES="+es);
                ir = new InputStreamReader(es);
                char[] buf = new char[1024];
                int i=0;
                while((i=ir.read(buf))!=-1)
                {
                builder.append(buf,0,i);
                }
            } 
            catch (IOException e) 
                {
                     ..........................
                }
            finally
            {
                    if(pro!=null)pro.destroy();
                    try {
                    if(pro!=null)pro.waitFor();
                    } catch (InterruptedException e1) {e1.printStackTrace();}
                    if(f!=null || f.exists())f.deleteOnExit();
        
                    try 
                    {
                        if(ir!=null)ir.close();
                        if(es!=null)es.close();
                    } catch (IOException e) {e.printStackTrace();}
                
            }
           ...........................
     }
     

  2. #2
    Avatar von cow
    cow cow ist offline Mitglied Bronze
    Registriert seit
    Dec 2009
    Beiträge
    33
    hey

    ich persönlich mag es nicht so wen man jemanden Helfen möchte Googelt und dann als ersten Google treffer deinen Post fast genau gleich in einem anderen Forum findet.
    http://www.java-forum.org/java-basic...t-setzten.html
    : /

    deswegen werd ich dir auch nicht helfen sry

    Gruß the Cow
     

  3. #3
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.098
    Moin,

    @cow: halte Dich doch bitte an die hier gültige Netiquette (http://www.tutorials.de/index.php?pg=netiquette), speziell Punkt 15
    Danke

    @Stiffler66: spezifiziere doch bitte Deine Frage ... was genau funktioniert an Deinem Code resp. wo hast Du welches Problem

    Danke und Gruß
    Klaus
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  4. #4
    Stiffler66 Stiffler66 ist offline Rookie
    Registriert seit
    Jan 2010
    Beiträge
    8
    @cow
    Verstehe leider nicht was daran falsch sein sollte auch in ein anderes Forum die selbe frage zu stellen, wenn ich in einem Forum keine Antwort bekomme dann versuche ich es auch wo anders.Wenn du mir behilflich wärst wäre es auch nicht nötig gewäsen wo anders nachzufragen

    @vfl
    Danke erstmal
    Eigentlich funktioniert alles, allerdings wollte ich den Fehler abfangen, dass ein Process länger als 20 sekunden braucht.
    Dieser soll dann abgebrochen werden und 0 zurück geben.
    leider hab ich bisher kein Process der länger als 20 sekunden dauert , aber will auch diesen Fehler abgefangen haben, für den Fall das er auftritt

    Gruß
     

  5. #5
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.098
    Zitat Zitat von Stiffler66 Beitrag anzeigen
    @cow
    Verstehe leider nicht was daran falsch sein sollte auch in ein anderes Forum die selbe frage zu stellen, wenn ich in einem Forum keine Antwort bekomme dann versuche ich es auch wo anders.Wenn du mir behilflich wärst wäre es auch nicht nötig gewäsen wo anders nachzufragen
    Das Problem verstehe ich allerdings auch nicht ....

    Zitat Zitat von Stiffler66 Beitrag anzeigen
    @vfl
    Danke erstmal
    Eigentlich funktioniert alles, allerdings wollte ich den Fehler abfangen, dass ein Process länger als 20 sekunden braucht.
    Dieser soll dann abgebrochen werden und 0 zurück geben.
    leider hab ich bisher kein Process der länger als 20 sekunden dauert , aber will auch diesen Fehler abgefangen haben, für den Fall das er auftritt
    Du könntest doch zum Testen einfach Prozesse abbrechen, die länger als ... sagen wir mal: 2 Sekunden dauern, oder

    Gruß
    Klaus
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  6. #6
    Stiffler66 Stiffler66 ist offline Rookie
    Registriert seit
    Jan 2010
    Beiträge
    8
    Ja, aber wie frage ich nach ob er länger als 2 sekunden gebraucht hat?
    Eine idee wäre es nach process.start() den aktuellen Thread 2 sekunden schlafen zulegen und danach den process zu beenden.aber wie sinnvoll das ist weiss ich nicht.
    Meine frage wäre eigentlich ob es da nicht eine funktion gibt mit der man einen Timeout setzen kann.
     

Ähnliche Themen

  1. ProcessBuilder
    Von IroNHeinZ im Forum Java Grundlagen
    Antworten: 7
    Letzter Beitrag: 20.12.09, 14:59
  2. ProcessBuilder - Vista ?
    Von Ashaman im Forum Java
    Antworten: 9
    Letzter Beitrag: 18.05.08, 19:32
  3. Probleme beim ProcessBuilder
    Von Dukeatcoding im Forum Java
    Antworten: 2
    Letzter Beitrag: 24.08.07, 13:08
  4. ProcessBuilder, src - bin?
    Von flashray im Forum Java
    Antworten: 4
    Letzter Beitrag: 04.06.07, 21:12
  5. Probleme mit Processbuilder
    Von Daelrik im Forum Java
    Antworten: 4
    Letzter Beitrag: 30.09.06, 15:54