Java Runtime.getRuntime().exec() fails after calling it several hundred times

androidexecjavaruntime.exec

I have a Java program that executes
Runtime.getRuntime().exec("ls -l");
many times, once for each directory in the system.

My test system has more than 1,000 directories and Runtime.getRuntime().exec("ls -l"); seems to error out after 480 directories or so.
The error message I'm getting is is "Error running exec(). Command: [ls, -l] Working Directory: null Environment: null".
I'm guessing it's running out of some required system resources or is it?
Is there any way to process all directories without erroring out?

Relative comment from an answer:

I should clarify that I was using Android SDK's adb.exe. I wanted to
execute something like Runtime.getRuntime().exec("adb shell ls -l")
multiple times on different directories.

Best Answer

You should explicitly close the input/output streams when using Runtime.getRuntime().exec.

Process p = null;
try {
    p = Runtime.getRuntime().exec("ls -l");
    //process output here
    p.waitFor();
} finally {
    if (p != null) {
        p.getOutputStream().close();
        p.getInputStream().close();
        p.getErrorStream().close(); 
    }
}
Related Topic