最近公司新上了一个自动化测试的项目,需要在我们的App里面开启一个进程去调用测试的App,在这工程中,主进程可能随时向子进程发送一些命令,而子进程在测试完成后也要把结果返回给子进程,因为本人以前对Process相当陌生,所以写的过程出现各种问题,而且发生网上的一些解决方法对自己也并不适用,所以就写了这篇文章。
我们先来看一下怎么启动一个子进程。
process = Runtime.getRuntime().exec(isRoot ? ProcessField.COMMAND_SU : ProcessField.COMMAND_SH);
其中ProcessField.COMMAND_SU=”su”;//当成功获取root后可以访问系统文件的进程
ProcessField.COMMAND_SH=”sh”;//未Root获取的进程
Process有三个方法,可以获取到进程里的流,
BufferedReader successResult = null;
BufferedReader errorResult = null;
DataOutputStream os = null;
os = new DataOutputStream(process.getOutputStream());
successResult = new BufferedReader(new InputStreamReader(process.getInputStream()));
errorResult = new BufferedReader(new InputStreamReader(proces