Como fazer com que os tubos funcionem com Runtime.exec ()?
Considere o seguinte código:
String commandf = "ls /etc | grep release";
try {
// Execute the command and wait for it to complete
Process child = Runtime.getRuntime().exec(commandf);
child.waitFor();
// Print the first 16 bytes of its output
InputStream i = child.getInputStream();
byte[] b = new byte[16];
i.read(b, 0, b.length);
System.out.println(new String(b));
} catch (IOException e) {
e.printStackTrace();
System.exit(-1);
}
A saída do programa é:
/etc:
adduser.co
Quando corro do shell, é claro, ele funciona como esperado:
poundifdef@parker:~/rabbit_test$ ls /etc | grep release
lsb-release
s internets me dizem que, devido ao fato de o comportamento do canal não ser multiplataforma, as mentes brilhantes que trabalham na fábrica Java que produz Java não podem garantir que os tubos funcione
Como posso fazer isso
Não vou fazer toda a minha análise usando construções Java em vez degrep
esed
, porque se eu quiser alterar o idioma, serei obrigado a reescrever meu código de análise nesse idioma, o que é totalmente inúti
Como posso fazer o Java fazer piping e redirecionamento ao chamar comandos de shel