- int childpid;
- signal (SIGALRM, SIG_IGN);
- signal (SIGHUP, Rehash);
- signal (SIGPIPE, DeadPipe);
- signal (SIGTERM, Exit);
- signal (SIGABRT, Exit);
- signal (SIGSEGV, Error);
- signal (SIGURG, Exit);
- signal (SIGKILL, Exit);
- if ((childpid = fork ()) < 0)
- return (ERROR);
- else if (childpid > 0)
- exit (0);
- setsid ();
- umask (007);
- /* close stdout, stdin, stderr */
- close(0);
- close(1);
- close(2);
-
- setpriority(PRIO_PROCESS,(int)getpid(),15); /* ircd sets to low process priority so it doesnt hog the box */
+ int childpid;
+ signal (SIGALRM, SIG_IGN);
+ signal (SIGHUP, Rehash);
+ signal (SIGPIPE, SIG_IGN);
+ signal (SIGTERM, Exit);
+ signal (SIGSEGV, Error);
+ if ((childpid = fork ()) < 0)
+ return (ERROR);
+ else if (childpid > 0)
+ exit (0);
+ setsid ();
+ umask (007);
+ printf("InspIRCd Process ID: \033[1;32m%lu\033[0m\n",(unsigned long)getpid());
+ freopen("/dev/null","w",stdout);
+ freopen("/dev/null","w",stderr);
+
+ setpriority(PRIO_PROCESS,(int)getpid(),15);
+
+ if (unlimitcore)
+ {
+ rlimit rl;
+ if (getrlimit(RLIMIT_CORE, &rl) == -1)
+ {
+ log(DEFAULT,"Failed to getrlimit()!");
+ return(FALSE);
+ }
+ else
+ {
+ rl.rlim_cur = rl.rlim_max;
+ if (setrlimit(RLIMIT_CORE, &rl) == -1)
+ log(DEFAULT,"setrlimit() failed, cannot increase coredump size.");
+ }
+ }