blob: c94b8adc5e717dd7cff49863e3890cd22a25167c [file] [log] [blame]
jeffhao5d1ac922011-09-29 17:41:15 -07001import java.util.Map;
2
3public class Main {
4 static public void main(String[] args) throws Exception {
5 checkManager();
6 for (int i = 1; i <= 2; i++) {
7 System.out.println("\nspawning child #" + i);
8 child();
9 Thread.sleep(2000);
10 checkManager();
11 }
12 System.out.println("\ndone!");
13 }
14
15 static private void child() throws Exception {
16 System.out.println("spawning child");
17 ProcessBuilder pb = new ProcessBuilder("/system/bin/sleep", "5");
18 Process proc = pb.start();
19 Thread.sleep(1000);
20 checkManager();
21 proc.waitFor();
22 System.out.println("child died");
23 }
24
25 static private void checkManager() {
26 Map<Thread, StackTraceElement[]> traces = Thread.getAllStackTraces();
27 boolean found = false;
28
29 for (Map.Entry<Thread, StackTraceElement[]> entry :
30 traces.entrySet()) {
31 Thread t = entry.getKey();
32 String name = t.getName();
33 if (name.equals("java.lang.ProcessManager")) {
34 System.out.println("process manager: " + t.getState());
35 found = true;
36 }
37 }
38
39 if (! found) {
40 System.out.println("process manager: nonexistent");
41 }
42 }
43}