Java Runtime.getRuntime().exec() 执行命令,遇到的阻塞问题:
仅仅处理了标准输出process.getInputStream()
,没有处理错误输出,结果执行xcodebuild命令时,执行中断,不能继续执行,原来是被错误输出阻塞了(由于xcodebuild的自身问题,它会把一些输出当作错误)。
解决方案,这里需要另起一个线程来处理错误输出,process.getErrorStream()
, 并且要先处理错误,然后处理标准输出。
1 | Process process = Runtime.getRuntime().exec(mycmd); |
在InputStreamRunnable中用readline()把Steam读掉。