diff options
Diffstat (limited to 'test/063-process-manager/src/Main.java')
| -rw-r--r-- | test/063-process-manager/src/Main.java | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/test/063-process-manager/src/Main.java b/test/063-process-manager/src/Main.java new file mode 100644 index 0000000000..c94b8adc5e --- /dev/null +++ b/test/063-process-manager/src/Main.java @@ -0,0 +1,43 @@ +import java.util.Map; + +public class Main { + static public void main(String[] args) throws Exception { + checkManager(); + for (int i = 1; i <= 2; i++) { + System.out.println("\nspawning child #" + i); + child(); + Thread.sleep(2000); + checkManager(); + } + System.out.println("\ndone!"); + } + + static private void child() throws Exception { + System.out.println("spawning child"); + ProcessBuilder pb = new ProcessBuilder("/system/bin/sleep", "5"); + Process proc = pb.start(); + Thread.sleep(1000); + checkManager(); + proc.waitFor(); + System.out.println("child died"); + } + + static private void checkManager() { + Map<Thread, StackTraceElement[]> traces = Thread.getAllStackTraces(); + boolean found = false; + + for (Map.Entry<Thread, StackTraceElement[]> entry : + traces.entrySet()) { + Thread t = entry.getKey(); + String name = t.getName(); + if (name.equals("java.lang.ProcessManager")) { + System.out.println("process manager: " + t.getState()); + found = true; + } + } + + if (! found) { + System.out.println("process manager: nonexistent"); + } + } +} |
