> The teardown of a Process launched by `ProcessBuilder` includes the closing > of streams and ensuring the termination of the process is the responsibility > of the caller. The `Process.close()` method provides a clear and obvious way > to ensure all the streams are closed and the process terminated. > > The try-with-resources statement is frequently used to open streams and > ensure they are closed on exiting the block. By implementing > `AutoClosable.close()` the completeness of closing the streams and process > termination can be done by try-with-resources. > > The actions of the `close()` method are to close each stream and destroy the > process if it has not terminated.
Roger Riggs has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 10 additional commits since the last revision: - Merge branch 'master' into 8364361-process-autocloseable - Expand the description of close() to describe the behavior of destroying the process. - javadoc tweaks - Misc, javadoc cleanup Simplified the Interrupt handling in ProcessCloseTest.ProcessCommand.ExpectExit. - Revisited handling of IOExceptions to throw instead of completely ignoring or logging. - Merge branch 'master' into 8364361-process-autocloseable - Throw IOExceptions on close instead of logging. - The close method is idempotent, it will only close the streams and destroy the process on the first call to close. - Updates from review comments: - Editorial improvements to javadoc - Exceptions that occur closing streams are quietly logged to the java.lang.Process system log as DEBUG - The prototype code attempting to wait for process exit is removed, it provided marginal benefit and raised complexity due to interrupt handling - Test updates for racy test cases that are not errors - 8364361: [process] java.lang.Process should implement close and be AutoCloseable Specify and implement AutoCloseable for Process. Add tests and example code as a snippet. ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26649/files - new: https://git.openjdk.org/jdk/pull/26649/files/d0c74cb7..174fc1d2 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26649&range=06 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26649&range=05-06 Stats: 29052 lines in 1280 files changed: 18702 ins; 5822 del; 4528 mod Patch: https://git.openjdk.org/jdk/pull/26649.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26649/head:pull/26649 PR: https://git.openjdk.org/jdk/pull/26649