| // Create a long running process and verify that the exitValue is not |
| // immediately available. Then destroy() it and verify that it |
| // terminates quickly with a non-zero exitValue. |
| public class Process_5 |
| { |
| public static void main(String[] args) |
| { |
| try |
| { |
| int c; |
| long startTime = System.currentTimeMillis(); |
| Runtime r = Runtime.getRuntime(); |
| String[] a = { "sleep", "120" }; |
| Process p = r.exec(a); |
| |
| try |
| { |
| c = p.exitValue(); |
| System.out.println("bad 1"); |
| return; |
| } |
| catch (IllegalThreadStateException itse) |
| { |
| // Ignore as this is good here. |
| } |
| |
| p.destroy(); |
| |
| c = p.waitFor(); |
| |
| long endTime = System.currentTimeMillis(); |
| |
| if (endTime - startTime > 110000L) |
| System.out.println("bad 2"); |
| |
| System.out.println(c != 0 ? "ok" : "bad 3"); |
| } |
| catch (Exception ex) |
| { |
| System.out.println(ex.toString()); |
| } |
| } |
| } |