forked from Telodendria/Telodendria
[ADD] Add PID option
This commit is contained in:
parent
18ae52d001
commit
d53b493754
2 changed files with 25 additions and 0 deletions
|
@ -75,6 +75,7 @@
|
|||
"serverName": { "type": "string", "required": true },
|
||||
"baseUrl": { "type": "string", "required": false },
|
||||
"identityServer": { "type": "string", "required": false },
|
||||
"pid": { "type": "string", "required": false },
|
||||
|
||||
"maxCache": { "type": "integer", "required": false },
|
||||
|
||||
|
|
24
src/Main.c
24
src/Main.c
|
@ -104,6 +104,9 @@ Main(Array * args)
|
|||
/* Program configuration */
|
||||
Config *tConfig;
|
||||
Stream *logFile;
|
||||
Stream *pidFile = NULL;
|
||||
|
||||
char *pidPath = NULL;
|
||||
|
||||
/* User validation */
|
||||
struct passwd *userInfo;
|
||||
|
@ -335,6 +338,21 @@ start:
|
|||
Free(token);
|
||||
}
|
||||
|
||||
if (tConfig->pid)
|
||||
{
|
||||
pidFile = StreamOpen(tConfig->pid, "w+");
|
||||
if (!pidFile)
|
||||
{
|
||||
char *msg = "Couldn't lock PID file at '%s'";
|
||||
Log(LOG_ERR, msg, tConfig->pid);
|
||||
exit = EXIT_FAILURE;
|
||||
goto finish;
|
||||
}
|
||||
pidPath = StrDuplicate(tConfig->pid);
|
||||
StreamPrintf(pidFile, "%ld", (long) getpid());
|
||||
StreamClose(pidFile);
|
||||
}
|
||||
|
||||
Log(LOG_DEBUG, "Configuration:");
|
||||
LogConfigIndent(LogConfigGlobal());
|
||||
Log(LOG_DEBUG, "Server Name: %s", tConfig->serverName);
|
||||
|
@ -604,6 +622,12 @@ finish:
|
|||
HttpRouterFree(matrixArgs.router);
|
||||
Log(LOG_DEBUG, "Freed routing tree.");
|
||||
|
||||
if (pidPath)
|
||||
{
|
||||
remove(pidPath);
|
||||
Free(pidPath);
|
||||
}
|
||||
|
||||
/*
|
||||
* Uninstall the memory hook because it uses the Log
|
||||
* API, whose configuration is being freed now, so it
|
||||
|
|
Loading…
Reference in a new issue