2017-04-07 3 views
-1

Ich habe 5 Dienste in file.bat 3 läuft und 2 gestoppt. Ich mag 3 Erfolg grün Test haben und 2 rotenWie kann nicht angezeigt werden, wenn Service läuft Test grün

ich glaube, das Problem mit meinem var ligne

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 


public class Cmd { 

    static String  a  = null; 
    static String  ligne = ""; 
    public final String output = null; 

    static String  CHEMIN = "vvvvvvvvvv"; 

    private static BufferedReader getOutput(Process p) 
    { 
    return new BufferedReader(new InputStreamReader(p.getInputStream())); 
    } 

    private static BufferedReader getError(Process p) 
    { 
    return new BufferedReader(new InputStreamReader(p.getErrorStream())); 
    } 

    static public String Stateprocess() 
    { 
    if (ligne.contains("RUNNING")) { 
     a = "RUNNING"; 
     System.out.println("ok"); 
    } else { 
     a = "STOPPED"; 
     System.out.println("no"); 
    } 

    return a; 
    } 


    public boolean ping(String CHEMIN) 
    { 

    int exitValue = 1; 

    try { 

     String[] commande = {"cmd.exe", "/C", CHEMIN + "test-sc.bat"}; 
     Process p = Runtime.getRuntime() 
         .exec(commande); 
     BufferedReader output = getOutput(p); 
     BufferedReader error = getError(p); 


     while ((ligne = output.readLine()) != null) { 
     System.out.println(ligne); 
     // System.out.println(ligne.contains("STOPPED")); 
     } 

     while ((ligne = error.readLine()) != null) { 
     System.out.println(ligne); 
     } 

     exitValue = p.waitFor(); 

    } 


    catch (IOException e) { 
     e.printStackTrace(); 
    } catch (InterruptedException e) { 
     e.printStackTrace(); 
    } 

    return exitValue == 0; 
    } 

    public static void main(String[] args) 
    { 
    Cmd exemple = new Cmd(); 
    boolean trouve = exemple.ping(CHEMIN); 
    System.out.println(trouve); 
    } 
} 
+0

Es ist nicht klar, was Sie fragen. Bitte erläutern Sie mehr. – freedev

Antwort

0

Dieser Code Aufenthalt aus Lesung und Ströme irren, bis das Ende des Stromes erreicht wurde. Aber das wird Ihren Java-Code warten lassen, bis der Prozess seine Aufgabe abgeschlossen hat. So

wenn dies ist, was Sie wollen, schlage ich vor, die Aussage

exitValue = p.waitFor(); 

vor den beiden While-Schleifen, wo man die Ströme lesen zu bewegen.

Damit sollten Sie sicher sein, dass beide Streams vollständig geschrieben sind.

Verwandte Themen