// screwing us over
Preforker prefork;
if (!(flags & CINIT_FLAG_NO_DAEMON_ACTIONS)) {
- if (g_conf->daemonize) {
- global_init_prefork(g_ceph_context, 0);
+ if (global_init_prefork(g_ceph_context, 0) >= 0) {
prefork.prefork();
if (prefork.is_parent()) {
return prefork.parent_wait();
}
else if (ceph_argparse_flag(args, i, "--foreground", "-f", (char*)NULL)) {
set_val_or_die("daemonize", "false");
- set_val_or_die("pid_file", "");
}
else if (ceph_argparse_flag(args, i, "-d", (char*)NULL)) {
set_val_or_die("daemonize", "false");
set_val_or_die("log_file", "");
- set_val_or_die("pid_file", "");
set_val_or_die("log_to_stderr", "true");
set_val_or_die("err_to_stderr", "true");
set_val_or_die("log_to_syslog", "false");
if (g_code_env != CODE_ENVIRONMENT_DAEMON)
return -1;
const md_config_t *conf = cct->_conf;
- if (!conf->daemonize)
+ if (!conf->daemonize) {
+ if (atexit(pidfile_remove_void)) {
+ derr << "global_init_daemonize: failed to set pidfile_remove function "
+ << "to run at exit." << dendl;
+ }
+
+ pidfile_write(g_conf);
+
return -1;
+ }
// stop log thread
g_ceph_context->_log->flush();