1、在实际开发中,使用Runtime.getRuntime().exec()执行Linux脚本时,需要同时读取标准输出流与错误输出流缓冲区数据,因为操作系统缓冲区大小有限制,不及时处理会导致缓冲区占满而挂住,这种问题发生在于开发人员对该接口不了解而引发Bug。
具体可以通过使用两个线程同时去读错误和标准输出流缓冲区数据,然后用proc.waitFor()可以获取执行的结果。这种事最常见的场景,只关注脚本执行结果。
2、但在实际开发中,通过Runtime.getRuntime().exec()执行Linux脚本时,不仅仅要关注脚本执行结果,同时还需要关注脚本执行返回的屏显信息,这个时候使用proc.waitFor()虽然能获取结果,但是屏显信息总是有时候有时候没有&