added no fork mode to the executable so it can be used w/ sipx watchdog service. This mode is not available on windows as we do not fork on windows regardless. Thanks to Paweł Pierścionek for the contribution.
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@3999 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
parent
680ef8d169
commit
ca5d5ce595
23
src/switch.c
23
src/switch.c
|
@ -25,6 +25,7 @@
|
|||
*
|
||||
* Anthony Minessale II <anthmct@yahoo.com>
|
||||
* Michael Jerris <mike@jerris.com>
|
||||
* Pawel Pierscionek <pawel@voiceworks.pl>
|
||||
*
|
||||
*
|
||||
* switch.c -- Main
|
||||
|
@ -194,7 +195,10 @@ int main(int argc, char *argv[])
|
|||
{
|
||||
char pid_path[256] = ""; // full path to the pid file
|
||||
const char *err = NULL; // error value for return from freeswitch initialization
|
||||
int bg = 0; // TRUE if we are running in background mode
|
||||
#ifndef WIN32
|
||||
int nf = 0; // TRUE if we are running in nofork mode
|
||||
#endif
|
||||
int nc = 0; // TRUE if we are running in noconsole mode
|
||||
int vg = 0; // TRUE if we are running in vg mode
|
||||
FILE *f; // file handle to the pid file
|
||||
pid_t pid = 0; //
|
||||
|
@ -254,6 +258,11 @@ int main(int argc, char *argv[])
|
|||
exit(0);
|
||||
}
|
||||
}
|
||||
#else
|
||||
|
||||
if (argv[x] && !strcmp(argv[x], "-nf")) {
|
||||
nf++;
|
||||
}
|
||||
#endif
|
||||
if (argv[x] && !strcmp(argv[x], "-hp")) {
|
||||
set_high_priority();
|
||||
|
@ -264,8 +273,8 @@ int main(int argc, char *argv[])
|
|||
}
|
||||
|
||||
if (argv[x] && !strcmp(argv[x], "-nc")) {
|
||||
bg++;
|
||||
}
|
||||
nc++;
|
||||
}
|
||||
|
||||
if (argv[x] && !strcmp(argv[x], "-vg")) {
|
||||
vg++;
|
||||
|
@ -276,7 +285,7 @@ int main(int argc, char *argv[])
|
|||
return freeswitch_kill_background();
|
||||
}
|
||||
|
||||
if (bg) {
|
||||
if (nc) {
|
||||
|
||||
signal(SIGHUP, handle_SIGHUP);
|
||||
signal(SIGTERM, handle_SIGHUP);
|
||||
|
@ -284,14 +293,14 @@ int main(int argc, char *argv[])
|
|||
#ifdef WIN32
|
||||
FreeConsole();
|
||||
#else
|
||||
if ((pid = fork())) {
|
||||
if (!nf && (pid = fork())) {
|
||||
fprintf(stderr, "%d Backgrounding.\n", (int)pid);
|
||||
exit(0);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
if (switch_core_init_and_modload(bg ? lfile : NULL, &err) != SWITCH_STATUS_SUCCESS) {
|
||||
if (switch_core_init_and_modload(nc ? lfile : NULL, &err) != SWITCH_STATUS_SUCCESS) {
|
||||
fprintf(stderr, "Cannot Initilize [%s]\n", err);
|
||||
return 255;
|
||||
}
|
||||
|
@ -305,7 +314,7 @@ int main(int argc, char *argv[])
|
|||
fprintf(f, "%d", pid = getpid());
|
||||
fclose(f);
|
||||
|
||||
switch_core_runtime_loop(bg);
|
||||
switch_core_runtime_loop(nc);
|
||||
|
||||
return switch_core_destroy(vg);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue