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

Reply via email to