1 // Create a long running process and verify that the exitValue is not
2 // immediately available.  Then destroy() it and verify that it
3 // terminates quickly with a non-zero exitValue.
4 public class Process_5
5 {
main(String[] args)6   public static void main(String[] args)
7   {
8     try
9       {
10 	int c;
11 	long startTime = System.currentTimeMillis();
12 	Runtime r = Runtime.getRuntime();
13 	String[] a = { "sleep", "120" };
14 	Process p = r.exec(a);
15 
16 	try
17 	  {
18 	    c = p.exitValue();
19 	    System.out.println("bad 1");
20 	    return;
21 	  }
22 	catch (IllegalThreadStateException itse)
23 	  {
24 	    // Ignore as this is good here.
25 	  }
26 
27 	p.destroy();
28 
29 	c = p.waitFor();
30 
31 	long endTime = System.currentTimeMillis();
32 
33 	if (endTime - startTime > 110000L)
34 	  System.out.println("bad 2");
35 
36 	System.out.println(c != 0 ? "ok" : "bad 3");
37       }
38     catch (Exception ex)
39       {
40 	System.out.println(ex.toString());
41       }
42   }
43 }
44