Question about libjava/childproc.c
thomas.stuefe at gmail.com
Wed Sep 5 16:15:01 UTC 2018
On Wed, Sep 5, 2018 at 6:06 PM, Alan Bateman <Alan.Bateman at oracle.com> wrote:
> On 05/09/2018 16:45, Thomas Stüfe wrote:
>> My question would be, could we not - instead of straight away closing
>> the file descriptor - set them all to FD_CLOEXEC instead?
> This comes up periodically but even if we do that then we still need this
> code to catch the places where FD_CLOEXEC isn't set.
Oh, I did not want to get rid of this coding, just change it like this:
@@ -109,7 +100,7 @@
if (isAsciiDigit(dirp->d_name) &&
(fd = strtol(dirp->d_name, NULL, 10)) >= from_fd + 2)
+ fcntl(fc, F_SETFD, FD_CLOEXEC);
So, keep looping thru the open file descriptors, but instead of
closing them - which would interfere with the file descriptor
opendir() is using - just set them to FD_CLOEXEC.
That would not interfere with opendir() and we could remove the weird
workaround above, which tries to outguess the opendir() implementation
and proactivly closes file descriptors.
I did not test this though so I may be on the wrong track.
> Note that there a thread net-dev trying to do this for sockets. The scenario
> there seems to be someone calling fork/exec directory and not using
> ProcessBuilder. The patch under discussion is not complete but it helps.
More information about the core-libs-dev