You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@apr.apache.org by Jeff Trawick <tr...@attglobal.net> on 2003/03/21 16:49:08 UTC

exactly what is the inherit flag supposed to control?

apr_file_io.h says

/**
  * Unset a file from being inherited by child processes.
  */

should it instead say something like this?

/**
  * Unset a file from being inherited by subprograms
  */

where subprogram is a child process running another executable, as 
contrasted with a child process running the same executable (i.e., 
fork() but no exec())




Re: exactly what is the inherit flag supposed to control?

Posted by "William A. Rowe, Jr." <wr...@rowe-clan.net>.
At 10:01 AM 3/21/2003, Joe Orton wrote:
>On Fri, Mar 21, 2003 at 10:49:08AM -0500, Jeff Trawick wrote:
>> apr_file_io.h says
>> 
>> /**
>>  * Unset a file from being inherited by child processes.
>>  */
>> 
>> should it instead say something like this?
>> 
>> /**
>>  * Unset a file from being inherited by subprograms
>>  */
>> 
>> where subprogram is a child process running another executable, as 
>> contrasted with a child process running the same executable (i.e., 
>> fork() but no exec())
>
>Whilst the latter is true on Unix I'm getting the impression from what
>Will is saying that the former is true on Win32.  (The comment about
>child_cleanups in apr_pools.h is equally confusing.)

Understand that fork() doesn't exist on win32 (the Perl pseudo-support
notwithstanding.)

So Unix has fork()->exec(), or simply fork().
Whereas Win32 has only exec().

Any 'child process' logic as an Apache MPM understands that idea
doesn't even exist on Win32.  We must implement our own communications
layer to identify the handles that are inherited by the children.

Windows really works more like the FD_CLOEXEC model for Unix
file handles.  The pool 'child cleanup' on Win32 is truly a noop.

Bill





Re: exactly what is the inherit flag supposed to control?

Posted by Joe Orton <jo...@manyfish.co.uk>.
On Fri, Mar 21, 2003 at 10:49:08AM -0500, Jeff Trawick wrote:
> apr_file_io.h says
> 
> /**
>  * Unset a file from being inherited by child processes.
>  */
> 
> should it instead say something like this?
> 
> /**
>  * Unset a file from being inherited by subprograms
>  */
> 
> where subprogram is a child process running another executable, as 
> contrasted with a child process running the same executable (i.e., 
> fork() but no exec())

Whilst the latter is true on Unix I'm getting the impression from what
Will is saying that the former is true on Win32.  (The comment about
child_cleanups in apr_pools.h is equally confusing.)

joe