从java程序调用unix shell?从java程序向unix管道读写稳定的数据流
我有两个问题
1)如何从java调用unix shell。运行库来运行这样的命令
进程p=运行时。getRuntime()。执行(命令)
cat alias>;偏见
2)如何在unix管道中读取和写入来自java的稳定数据流。 我是否必须对管道进行所有系统调用,比如open read write
我基本上想复制这个命令
cat alias>;偏见
稳定的数据流将来自java程序,而不是cat alias
# 1 楼答案
自JDK7以来,有一种方便的方法可以做到这一点:
参考:ProcessBuilder#redirectOutput
# 2 楼答案
可以像调用任何其他程序一样调用Unix shell。使用
-c
选项传递命令以作为参数运行。还要确保使用exec(String[])
方法,而不是exec(String)
,以避免命令被错误地标记:要从/向进程读写,请从刚刚创建的
Process
实例获取输入、输出和错误流:然后像往常一样读取/写入这些流
请注意,流是相对于Java应用程序命名的。写入
OutputStream
的任何内容都将通过管道传输到您创建的流程的标准输入。进程写入stdout/stderr的任何内容都通过管道分别传输到从p.getInputStream()
和p.getErrorStream()
获取的InputStream
参考:http://download.oracle.com/javase/6/docs/api/java/lang/Process.html