if use ps_pid.poll() to check for termination condition, there is a
race condition. consider this, the check for ps_pid.poll() succeed
and continue to process the output. when the output is being
processed, the "ps_pid" process terminated, generating some more
output, which hasn't yet been read by pidcat process. after pidcat
continues next loop iteration, the ps_pid.poll() check terminate the
loop, and the remaining output is lost. if the target process's pid
is in the lost output, then the target pid can't be retrieved.
PID Cat
An update to Jeff Sharkey's excellent logcat color script which only shows log entries for processes from a specific application package.
During application development you often want to only display log messages coming from your app. Unfortunately, because the process ID changes every time you deploy to the phone it becomes a challenge to grep for the right thing.
This script solves that problem by filtering by application package. Supply the target package as the sole argument to the python script and enjoy a more convenient development process.
pidcat com.oprah.bees.android
Here is an example of the output when running for the Google Plus app:
Install
Get the script:
-
OS X: Use Homebrew.
brew install pidcatIf you need to install the latest development version
brew unlink pidcat brew install --HEAD pidcat -
Others: Download the
pidcat.pyand place it on your PATH.
Make sure that adb from the Android SDK is on your PATH. This script will
not work unless this is that case. That means, when you type adb and press
enter into your terminal something actually happens.
To include adb and other android tools on your path:
export PATH=$PATH:<path to Android SDK>/platform-tools
export PATH=$PATH:<path to Android SDK>/tools
Include these lines in your .bashrc or .zshrc.
