42 #include <sys/types.h> 46 #ifdef __CYGWIN32__ // to resolve h_errno dependency 58 m_log_size (10485760),
60 m_with_log_server (
"no"),
61 m_log_server (
"assalogd@"),
63 m_graceful_quit (false),
64 m_version (
"unknown"),
66 m_author (
"John Doe"),
67 m_help_msg (
"No help available"),
71 m_ommit_pidfile (
"no"),
74 m_version_flag (false),
97 ::gethostname (hn,
sizeof (hn)-1);
124 init (
int* argc,
char* argv [],
const char* ht_)
134 cp += strlen(argv[0]);
141 #if defined (WIN32) // get rid of '.exe' 144 if (*extidx ==
'.') {
155 std::cerr <<
"Try '" << argv[0] <<
" --help' for details.\n";
165 std::cerr <<
'\n' << argv[0] <<
" " <<
get_version () <<
'\n' <<
'\n' 166 <<
"Written by " <<
m_author <<
"\n\n";
213 if (
m_port.length() == 0) {
234 #if !(defined (__FreeBSD__) || defined(__FreeBSD_kernel__) \ 235 || defined (__NetBSD__)) 262 #endif // !defined(WIN32) 273 static const char self[] =
"GenServer::init_internals";
296 if (S_ISREG (fst.st_mode)) {
336 DL((
ASSAERR,
"Failed to lock PID file: %s\n",
343 DL((
APP,
"========================================================\n"));
344 DL((
APP,
"|| Server configuration settings ||\n"));
345 DL((
APP,
"========================================================\n"));
352 DL((
APP,
"========================================================\n"));
373 for (i = 0; i < size; i++) {
377 nullfd = open (
"/dev/null", O_WRONLY | O_CREAT, 0666);
379 syslog (LOG_ERR,
"failed to open \"/dev/null\"");
383 (void) dup2 (nullfd, 1);
384 (void) dup2 (nullfd, 2);
385 (void) close (nullfd);
387 if ( setsid() == -1 ) {
388 syslog (LOG_ERR,
"setsid() failed");
398 if ( chdir(
"/") == -1 ) {
404 #endif // defined(WIN32) 411 trace(
"GenServer::handle_signal");
412 std::ostringstream m;
416 case SIGTERM: m <<
"SIGTERM signal caugth. ";
break;
417 case SIGINT: m <<
"SIGINT signal caugth. ";
break;
418 default: m <<
"Unexpected signal caugth.";
420 m <<
"Signal # " << signum_ <<
std::ends;
421 DL((
APP,
"%s\n", m.str ().c_str () ));
422 DL((
APP,
"Initiating shutdown sequence...\n"));
426 DL((
APP,
"Shutdown sequence completed - Exiting !\n"));
const char * get_opt_error() const
If previous call to one of member functions returned false, retrieve detailed error message...
const char * get_error_msg() const
In case of error, return a verbal description of the last error.