The following reply was made to PR general/2144; it has been noted by GNATS.
From: Janos Farkas <[EMAIL PROTECTED]>
To: Dean Gaudet <[EMAIL PROTECTED]>
Cc: [EMAIL PROTECTED]
Subject: Re: general/2144: apache always detaches for normal operation
Date: Mon, 31 Aug 1998 17:13:32 +0200
On 1998-04-27 at 20:09:17, Dean Gaudet wrote:
> 1.3 is in feature freeze... but if you want to work this out that's cool.
Ok, I guess I am few months too late, but I just got around to the
apache updating game now... I think I managed to do it as cleanly as
possible; without of course affecting users who don't know about it.
So here's it, the essence of the change is very-very small; just making
http_main.c detach() not if !one_process, but if !no_detach, and
creating a new '-n' option to do just that, and for a bit more
streamlining, making '-X' set one_process AND this new no_detach
variable. And of course updating all the getopt calls in there, and
updating both the manual page, and the html docs to describe briefly
what '-n' does.
[Just an aside, most programs which can do a no-detach start, usually do
that on '-f', but it's not available. A few more programs use -n (the
Linux klogd/syslogd, and amd IIRC), so I settled for that.]
Janos
Index: htdocs/manual/invoking.html
===================================================================
RCS file: /cvs/apache-1.3/htdocs/manual/invoking.html,v
retrieving revision 1.20
diff -u -u -r1.20 invoking.html
--- invoking.html 1998/07/19 21:34:58 1.20
+++ invoking.html 1998/08/31 14:54:10
@@ -59,6 +59,10 @@
daemon does not detach from the terminal or fork any children. Do <EM>NOT</EM>
use this mode to provide ordinary web service.
+<DT><CODE>-n</CODE>
+<DD>Run the daemon without detaching from the terminal, but don't stop
+it from creating child processes.
+
<DT><CODE>-v</CODE>
<DD>Print the version of httpd and its build date, and then exit.
Index: src/main/http_main.c
===================================================================
RCS file: /cvs/apache-1.3/src/main/http_main.c,v
retrieving revision 1.387
diff -u -u -r1.387 http_main.c
--- http_main.c 1998/08/13 01:55:06 1.387
+++ http_main.c 1998/08/31 14:54:26
@@ -306,6 +306,12 @@
static int one_process = 0;
+/* nodetach -- don't detach on startup; has no effect on the further work of
+ * the server.
+ */
+
+static int no_detach = 0;
+
/* set if timeouts are to be handled by the children and not by the parent.
* i.e. child_timeouts = !standalone || one_process.
*/
@@ -954,6 +960,7 @@
fprintf(stderr, " -f file : specify an alternate
ServerConfigFile\n");
fprintf(stderr, " -C \"directive\" : process directive before reading
config files\n");
fprintf(stderr, " -c \"directive\" : process directive after reading
config files\n");
+ fprintf(stderr, " -n : don't detach from the terminal\n");
fprintf(stderr, " -v : show version number\n");
fprintf(stderr, " -V : show compile settings\n");
fprintf(stderr, " -h : list available configuration
directives\n");
@@ -4100,7 +4107,7 @@
is_graceful = 0;
++generation;
- if (!one_process) {
+ if (!no_detach) {
detach();
}
else {
@@ -4349,7 +4356,7 @@
ap_setup_prelinked_modules();
while ((c = getopt(argc, argv,
- "D:C:c:Xd:f:vVhlL:St"
+ "D:C:c:Xnd:f:vVhlL:St"
#ifdef DEBUG_SIGSTOP
"Z:"
#endif
@@ -4391,6 +4398,9 @@
exit(0);
case 'X':
++one_process; /* Weird debugging mode. */
+ /* flow through to no detach */
+ case 'n':
+ ++no_detach;
break;
#ifdef DEBUG_SIGSTOP
case 'Z':
@@ -5516,7 +5526,7 @@
ap_setup_prelinked_modules();
- while ((c = getopt(argc, argv, "D:C:c:Xd:f:vVhlZ:iusSt")) != -1) {
+ while ((c = getopt(argc, argv, "D:C:c:Xnd:f:vVhlZ:iusSt")) != -1) {
char **new;
switch (c) {
case 'c':
@@ -5577,6 +5587,9 @@
exit(0);
case 'X':
++one_process; /* Weird debugging mode. */
+ /* flow through to no detach */
+ case 'n':
+ ++no_detach;
break;
case 't':
configtestonly = 1;
@@ -5707,12 +5720,13 @@
* but only handle the -L option
*/
llp_dir = SHARED_CORE_DIR;
- while ((c = getopt(argc, argv, "D:C:c:Xd:f:vVhlL:SZ:t")) != -1) {
+ while ((c = getopt(argc, argv, "D:C:c:Xnd:f:vVhlL:SZ:t")) != -1) {
switch (c) {
case 'D':
case 'C':
case 'c':
case 'X':
+ case 'n':
case 'd':
case 'f':
case 'v':
Index: src/support/httpd.8
===================================================================
RCS file: /cvs/apache-1.3/src/support/httpd.8,v
retrieving revision 1.11
diff -u -u -r1.11 httpd.8
--- httpd.8 1998/06/16 03:37:32 1.11
+++ httpd.8 1998/08/31 14:54:28
@@ -71,6 +71,8 @@
.BI \-c " directive"
] [
.BI \-D " parameter"
+] [
+.BI \-n
]
.B httpd
@@ -144,6 +146,10 @@
Sets a configuration \fIparameter\fP which can be used with
<IfDefine>...</IfDefine> sections in the configuration files
to conditionally skip or process commands.
+.TP
+.BI \-n
+Run the daemon without detaching from the terminal, but don't stop
+it from creating child processes.
.TP
.B \-h
Output a list of directives together with expected arguments and