如何使管道使用Runtime.exec()?考虑以下代码: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);}该程序的输出是:/etc:adduser.co当然,当我从shell运行时,它按预期工作:poundifdef@parker:~/rabbit_test$ ls /etc | grep release
lsb-release互联网告诉我,由于管道行为不是跨平台的,在Java工厂生产Java的聪明人不能保证管道工作。我该怎么做?我不打算使用Java构造来进行所有的解析,而不是grep和sed,因为如果我想改变语言,我将被迫用该语言重写我的解析代码,这完全是不可能的。如何让Java在调用shell命令时进行管道和重定向?
添加回答
举报
0/150
提交
取消