我的应用程序在单独的线程中使用进程来运行一些命令并从中获取输入:
process = Runtime.getRuntime().exec("su");
out = new DataOutputStream(process.getOutputStream());
应用程序将命令发送到进程,如下所示:
public void setCommands(String[] commands)
{
try{
for(String command : commands){
out.writeBytes(command + "\n");
}
out.writeBytes("exit\n"); //if I comment this line the commands get lost
out.flush();
}catch(IOException e){
e.printStackTrace();
}
}
然后线程使用BufferedReaders从进程读取输入并将其发送到主线程,并且它第一次正常工作。问题是我希望通过多次调用setCommands()
来重用相同的进程,但是在第一次调用之后,进程的OutputStream将被out.writeBytes("exit\n");
语句关闭。如果我评论这一行似乎out.flush()
开始没有效果。有人可以向我解释为什么会发生这种情况,如何才能做到这一点?