Commit 72cf75fa by Qiang Huang Committed by Stéphane Graber

lxc-start: store PID file to lxc_container

So we can remove PID file untill lxc_container_free. This also fix bug: https://github.com/lxc/lxc/issues/89Signed-off-by: 's avatarQiang Huang <h.huangqiang@huawei.com> Acked-by: 's avatarSerge E. Hallyn <serge.hallyn@ubuntu.com>
parent 844f7a38
......@@ -302,6 +302,11 @@ int main(int argc, char *argv[])
}
if (my_args.pidfile != NULL) {
if (ensure_path(&c->pidfile, my_args.pidfile) < 0) {
ERROR("failed to ensure pidfile '%s'", my_args.pidfile);
goto out;
}
pid_fp = fopen(my_args.pidfile, "w");
if (pid_fp == NULL) {
SYSERROR("failed to create pidfile '%s' for '%s'",
......@@ -342,10 +347,6 @@ int main(int argc, char *argv[])
c->want_close_all_fds(c, true);
err = c->start(c, 0, args) ? 0 : -1;
if (my_args.pidfile)
unlink(my_args.pidfile);
out:
lxc_container_put(c);
if (pid_fp)
......
......@@ -237,6 +237,12 @@ static void lxc_container_free(struct lxc_container *c)
free(c->config_path);
c->config_path = NULL;
}
if (c->pidfile) {
unlink(c->pidfile);
free(c->pidfile);
c->pidfile = NULL;
}
free(c);
}
......@@ -3178,6 +3184,7 @@ struct lxc_container *lxc_container_new(const char *name, const char *configpath
lxcapi_clear_config(c);
}
c->daemonize = true;
c->pidfile = NULL;
// assign the member functions
c->is_defined = lxcapi_is_defined;
......
......@@ -68,6 +68,12 @@ struct lxc_container {
/*!
* \private
* File to store pid.
*/
char *pidfile;
/*!
* \private
* Container semaphore lock.
*/
struct lxc_lock *slock;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment