Quoting Qiang Huang (h.huangqi...@huawei.com): > So we can remove PID file untill lxc_container_free. > > This also fix bug: https://github.com/lxc/lxc/issues/89 > > Signed-off-by: Qiang Huang <h.huangqi...@huawei.com>
Acked-by: Serge E. Hallyn <serge.hal...@ubuntu.com> > --- > src/lxc/lxc_start.c | 9 +++++---- > src/lxc/lxccontainer.c | 7 +++++++ > src/lxc/lxccontainer.h | 6 ++++++ > 3 files changed, 18 insertions(+), 4 deletions(-) > > diff --git a/src/lxc/lxc_start.c b/src/lxc/lxc_start.c > index d5379da..fd2dc6e 100644 > --- a/src/lxc/lxc_start.c > +++ b/src/lxc/lxc_start.c > @@ -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) > diff --git a/src/lxc/lxccontainer.c b/src/lxc/lxccontainer.c > index d020918..579c50c 100644 > --- a/src/lxc/lxccontainer.c > +++ b/src/lxc/lxccontainer.c > @@ -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); > } > > @@ -3121,6 +3127,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; > diff --git a/src/lxc/lxccontainer.h b/src/lxc/lxccontainer.h > index f3c7d72..84caa31 100644 > --- a/src/lxc/lxccontainer.h > +++ b/src/lxc/lxccontainer.h > @@ -68,6 +68,12 @@ struct lxc_container { > > /*! > * \private > + * File to store pid. > + */ > + char *pidfile; > + > + /*! > + * \private > * Container semaphore lock. > */ > struct lxc_lock *slock; > -- > 1.8.3 > > _______________________________________________ lxc-devel mailing list lxc-devel@lists.linuxcontainers.org http://lists.linuxcontainers.org/listinfo/lxc-devel