httpd-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mark Montague <m...@catseye.org>
Subject Re: [users@httpd] apache source code
Date Mon, 21 Mar 2011 23:51:04 GMT
  On March 21, 2011 17:56 , James Godrej <jamesgodrej@yahoo.in>  wrote:
> I want to look at the apache source code those lines which are responsible for making
it a daemon.Is the source available in html format online?
> Which file should I browse?

Why?  The reason you are asking actually can make a big difference.  As 
an example, if you are writing your own program and want to make it a 
daemon, you would be much better served by doing a web search for "unix 
create daemon".  The reason is that copying the code from Apache HTTP 
Server is likely to be frustrating, because the code that does this is 
highly specialized to the needs of Apache HTTP Server and is complicated 
by the need to support a large variety of platforms and environments.

As a different example, if you suspect you have a problem with how 
Apache HTTP Server is making itself a daemon on your system, please 
describe the problem, and include relevant details about your situation 
(output of "httpd -V", operating system and version, and, if you've 
compiled httpd yourself, your configure command line and the compiler 
name and version).

If you want to look at the source code for Apache HTTP Server, I 
recommend downloading the source code for the version you are running.   
This will allow you to search the code using your favorite tools.  You 
can get the source code from http://httpd.apache.org/download.cgi  Let 
us know if you can't find the version you are interested in.

To answer the first question you actually asked, you can view the source 
code via the web at http://svn.apache.org/viewvc/httpd/httpd/   However, 
the features of this web interface are aimed at developers and you may 
find them difficult to use unless you're familiar with source code 
control systems.

To answer the second question you actually asked, there is no one 
function in Apache HTTP Server that handles all of the "daemon-like" 
steps all in one place, since some parts of  and are intricately tied to 
child management.  However, most of the work of daemonizing is done in 
the function apr_proc_detach(), which is actually a part of the APR 
library, rather than a part of Apache HTTP Server itself.  A copy of APR 
is included in official releases of the Apache HTTP Server source code 
in the srclib subdirectory.  But if you are using source code for Apache 
HTTP Server that is not from an official release, then you can get the 
APR source code from http://apr.apache.org/

If you're reading the source code for the official release of Apache 
HTTP Server 2.2.17, then:

srclib/apr/threadproc/unix/procsup.c
- This is where the source code for the apr_proc_detach() function is.  
apr_proc_detach() does most of the work of daemonizing.

srclib/apr/threadproc/unix/proc.c
- apr_proc_create(), which is called by various MPMs, is defined here.

You may also want to look at the other files in the 
srclib/apr/threadproc/unix directory.

server/mpm/prefork/prefork.c (if you are using the prefork MPM)
- The prefork_pre_config() function handles a lot of the setup tasks, 
including calling apr_proc_detach()

server/mpm/worker/worker.c (if you are using the worker MPM)
- The worker_pre_config() function handles a lot of the setup tasks, 
including calling apr_proc_detach()

os/unix/unixd.c
- unixd_setup_child() is responsible for chroot, chdir, and changing user id
- also see the various unixd_set_* functions in this file


I hope this helps.

--
   Mark Montague
   mark@catseye.org


---------------------------------------------------------------------
The official User-To-User support forum of the Apache HTTP Server Project.
See <URL:http://httpd.apache.org/userslist.html> for more info.
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
   "   from the digest: users-digest-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org


Mime
View raw message