/* Create pidfile even if one already exists and is locked? */
static bool force;
+/* Should we chdir to "/". */
+static bool chdir_ = true;
+
/* Returns the file name that would be used for a pidfile if 'name' were
* provided to set_pidfile(). The caller must free the returned string. */
char *
return pidfile;
}
+/* Sets that we do not chdir to "/". */
+void
+set_no_chdir(void)
+{
+ chdir_ = false;
+}
+
/* Normally, die_if_already_running() will terminate the program with a message
* if a locked pidfile already exists. If this function is called,
* die_if_already_running() will merely log a warning. */
write(fds[1], &c, 1);
close(fds[1]);
setsid();
- chdir("/");
+ if (chdir_) {
+ chdir("/");
+ }
break;
case -1:
printf(
"\nDaemon options:\n"
" -D, --detach run in background as daemon\n"
+ " --no-chdir do not chdir to '/'\n"
" -P, --pidfile[=FILE] create pidfile (default: %s/%s.pid)\n"
" -f, --force with -P, start even if already running\n",
ovs_rundir, program_name);