On Wed, 3 Sep 2025 19:00:26 GMT, David Lloyd <[email protected]> wrote:
>> Roger Riggs has updated the pull request incrementally with one additional >> commit since the last revision: >> >> javadoc tweaks > > src/java.base/share/classes/java/lang/Process.java line 664: > >> 662: ioe = quietClose(errorReader != null ? errorReader : >> getErrorStream(), ioe); >> 663: >> 664: destroy(); // no-op if process is not alive > > On some platforms, `destroy` and `destroyForcibly` behave differently. That > means `close` would also behave differently depending on the platform. Maybe > it should either always call `destroyForcibly` or else only call `destroy` if > `supportsNormalTermination` (and otherwise hope that closing the streams is a > good enough hint) to be consistent? `DestroyForcibly` is an escalation that should only be used with a known poorly behaved process; and that's up to the programmer. It is the equivalent of `kill -9`. It should not be used in the normal case. Unfortunately, Windows does not have a polite, please terminate API so `destroy` has the same behavior as `destroyForcibly`. If the caller uses `process.waitFor()` within the try-catch, the process will have terminated, possibly based on the stream closings, and `destroy()` will not be called. If emphasis is needed, the javadoc can elaborate. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26649#discussion_r2320282535
