Sto chiamando i programmi della riga di comando collegati da pipe. Tutto questo funziona su Linux di sicuro.Java exec() non restituisce il risultato previsto dei comandi collegati delle pipe
mio metodo:
protected String execCommand(String command) throws IOException {
String line = null;
if (command.length() > 0) {
Process child = Runtime.getRuntime().exec(command);
InputStream lsOut = child.getInputStream();
InputStreamReader r = new InputStreamReader(lsOut);
BufferedReader in = new BufferedReader(r);
String readline = null;
while ((readline = in.readLine()) != null) {
line = line + readline;
}
}
return line;
}
Se sto chiamando qualche file cat | grep asd, sto ottenendo il risultato atteso. Ma non tutti i comandi funzionano correttamente. Per esempio con questo:
cat /proc/cpuinfo | wc -l
o questo:
cat /proc/cpuinfo | grep "model name" | head -n 1 | awk -F":" '{print substr($2, 2, length($2))}
il metodo ritorna null. Immagino che questo problema dipenda dai comandi di formattazione dell'output come head, tail, wc, ecc. Come posso aggirare questo problema e ottenere il risultato finale dell'output?
Useless (usa * 3) di 'cat'. –
@Dennis - anzi. Ben individuato! –
@Bobby Ho provato, questo non aiuta. – Pawka