From: cgf AT cygnus DOT com (Christopher Faylor) Subject: Re: close-on-exec doesnt work for spawn*() 26 May 1998 17:35:13 -0700 Message-ID: <199805262350.TAA28900.cygnus.cygwin32.developers@kramden.cygnus.com> To: cygwin32-developers AT cygnus DOT com >From: newsham AT lava DOT net (Tim Newsham) >Date: Tue, 26 May 1998 13:16:34 -1000 (HST) > >> close_on_exec is only called for P_OVERLAY spawn, i.e. exec(). >> Whether this is correct or not is debatable, I think. > >Ok, I'll start the debate :) > > - If I set close-on-exec flag on a descriptor, that descriptor > should not be open in any other (non-fork'ed) processes > created by the program. > >Is there any other mechanism for making file descriptors close when >a spawn is performed? The problem is that the current implementation of close_on_exec actually closes the files in the process prior to executing the exec. That doesn't work well with P_NOWAIT. An alternate way of doing this would be to have the delinearize function close files as it is... delinearizing them. That would have the advantage of doing what you want but it would have the disadvantage of only working with cygwin32 programs specifically. There is also a SetHandle function that would do this on a Win32 basis, but I believe it is only available for NT 4 and beyond. The bottom line is that I don't think there is any foolproof way to do this. cgf