java如何使用进程和PID过滤正确捕获logcat?
这似乎很简单
我正在使用Runtime.getRuntime().exec(commandString);
我试过了
String commandString = "logcat -v raw --pid=" + PID);
Runtime.getRuntime().exec(commandString);
我在没有-v raw
的情况下尝试了它,还尝试(并且需要)使用|
使用多个PID。
似乎什么都不管用。我有一个什么都得不到的new BufferedReader(new InputStreamReader(p.getInputStream()));
。如果我不在PID上过滤,它会工作,但会打印出所有命中logcat的内容,这不是很有用
我错过了什么
这是重要部分的全部内容
try {
Runtime.getRuntime().exec("logcat -c").waitFor();
StringBuilder pids = new StringBuilder("");
for (int i = 0; i < PIDs.size(); i++){
pids.append(Integer.toString(PIDs.get(i)));
if (i < PIDs.size() - 1){
pids.append("|");
}
}
String commmandString = "logcat -v raw --pid=" + pids);
p = Runtime.getRuntime().exec(commmandString);
mBufferedReader = new BufferedReader(new InputStreamReader(p.getInputStream()));
} catch (IOException e) {} catch (InterruptedException e) {}
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
p.destroy();
};
});
mThreadAlive = true;
mLoggingThread.start();
# 1 楼答案
这将有助于将输出重定向到
InputStream
(可以将其包装为BufferedReader
):