Another ProcessBuilder enhancement: execve
David M. Lloyd
david.lloyd at redhat.com
Fri Oct 21 18:58:15 UTC 2016
It would be useful for processes which self-update or otherwise
self-manage to be able to exec a new process which replaces the current
one, in the manner of POSIX execve. This might tie in with
ProcessBuilder, though there are a few key differences:
1. The method to execute the process (obviously) would never normally
return, similarly to how System.exit() doesn't normally return.
2. The options for redirection would be necessarily limited to File,
INHERIT, or DISCARD; PIPE does not make sense since the current process
would be eliminated.
Another interesting characteristic is that this would be essentially a
hybrid between System.exit() and ProcessBuilder.start(), from both an
execution perspective (as mentioned above) and a security perspective,
in that the caller would have to be authorized both to terminate the VM
(i.e. SecurityManager.checkExit(0), or potentially a new check specific
to this operation) and also to exec the target process (i.e.
SecurityManager.checkExec(fileName)).
Exiting or exec'ing another process during JVM shutdown-for-exec should
be disallowed, though the former could be tolerated in the same way that
calling exit() during an in-progress shutdown is tolerated today (i.e.
indefinite blocking).
My understanding is that Windows has at least one way to accomplish the
same effect as well, but that bears more research than my quick web search.
I know the time is past for 9, but I think this idea might be good to
explore for 10, or at least make for an interesting discussion.
Thoughts?
--
- DML
More information about the core-libs-dev
mailing list