1
1

dvm: add daemonize and set-sid options

Signed-off-by: Thomas Naughton <naughtont@ornl.gov>
Этот коммит содержится в:
Thomas Naughton 2017-01-19 16:55:16 -05:00
родитель cbb28f372a
Коммит 39d335a277

Просмотреть файл

@ -65,6 +65,7 @@
#include "opal/util/opal_getcwd.h"
#include "opal/util/show_help.h"
#include "opal/util/fd.h"
#include "opal/util/daemon_init.h"
#include "opal/version.h"
#include "opal/runtime/opal.h"
@ -99,6 +100,8 @@ static struct {
char *report_uri;
char *prefix;
bool run_as_root;
bool set_sid;
bool daemonize;
} myglobals;
static opal_cmd_line_init_t cmd_line_init[] = {
@ -118,6 +121,14 @@ static opal_cmd_line_init_t cmd_line_init[] = {
&myglobals.prefix, OPAL_CMD_LINE_TYPE_STRING,
"Prefix to be used to look for ORTE executables" },
{ "orte_daemonize", '\0', NULL, "daemonize", 0,
&myglobals.daemonize, OPAL_CMD_LINE_TYPE_BOOL,
"Daemonize the orte-dvm into the background" },
{ NULL, '\0', NULL, "set-sid", 0,
&myglobals.set_sid, OPAL_CMD_LINE_TYPE_BOOL,
"Direct the orte-dvm to separate from the current session"},
{ "orte_debug_daemons", '\0', "debug-daemons", "debug-daemons", 0,
NULL, OPAL_CMD_LINE_TYPE_BOOL,
"Debug daemons" },
@ -278,6 +289,22 @@ int main(int argc, char *argv[])
*/
orte_launch_environ = opal_argv_copy(environ);
#if defined(HAVE_SETSID)
/* see if we were directed to separate from current session */
if (myglobals.set_sid) {
setsid();
}
#endif
/* detach from controlling terminal
* otherwise, remain attached so output can get to us
*/
if(!orte_debug_flag &&
!orte_debug_daemons_flag &&
myglobals.daemonize) {
opal_daemon_init(NULL);
}
/* Intialize our Open RTE environment */
if (ORTE_SUCCESS != (rc = orte_init(&argc, &argv, ORTE_PROC_MASTER))) {
/* cannot call ORTE_ERROR_LOG as it could be the errmgr