Re: apache source code

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



 On March 21, 2011 17:56 , James Godrej <jamesgodrej@xxxxxxxx>  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@xxxxxxxxxxx


---------------------------------------------------------------------
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@xxxxxxxxxxxxxxxx
  "   from the digest: users-digest-unsubscribe@xxxxxxxxxxxxxxxx
For additional commands, e-mail: users-help@xxxxxxxxxxxxxxxx



[Index of Archives]     [Open SSH Users]     [Linux ACPI]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Squid]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux