La conversión de salida shell interactivo a texto sin formato

Ethan Onweller:

Estoy tratando de ver la tabla de temperaturas para mi CPU en mi máquina Linux con Java. Este trozo de código mostrará la salida de la shell para otros comandos, ls, cat file, pero no se mostrará watch sensorsa medida que retorna una salida interactiva. ¿Hay alguna manera de convertirlo en texto plano de alguna manera?

Error: [/usr/bin/watch, sensors]

Error opening terminal: unknown.

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class tempapp{

public static void main (String args[]) throws IOException, InterruptedException {
    //build command
    List<String> commands = new ArrayList<String>();
    commands.add("/usr/bin/watch");
    //args
    commands.add("sensors");
    System.out.println(commands);

    ProcessBuilder pb = new ProcessBuilder(commands);
    pb.directory(new File("/home/ethano"));
    pb.redirectErrorStream(true);
    Process process = pb.start();

    //Read output
    StringBuilder out = new StringBuilder();
    BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
    String line = null, previous = null;
    while ((line = br.readLine()) != null)
        if (!line.equals(previous)) {
            previous = line;
            out.append(line).append('\n');
            System.out.println(line);
        }

    //Check result
    if (process.waitFor() == 0){
        System.out.println("\n success");
        System.exit(0);
    }

    //weird termination
    System.err.println(commands);
    System.err.println(out.toString());
    System.exit(1);
    }
}
Bart van Oort:

Todo lo que watchhace es llamar al comando es dado ( sensorsen este caso) una vez cada dos segundos. Simplemente puede tener su aplicación emular este comportamiento llamando /usr/bin/sensorsen un bucle por una vez cada dos segundos (o sin embargo muchas veces que necesita), por lo tanto, omitiendo la necesidad de leer la salida shell interactivo.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=275719&siteId=1
Recomendado
Clasificación