On Fri, 12 Apr 2013 15:36:03 -0500 Serge Hallyn <serge.hal...@ubuntu.com> wrote:
> Quoting Dwight Engen (dwight.en...@oracle.com): > > pclose returns the exit status from wait, we need to check that to > > see if the script itself failed or not. Tested a script that > > returned 0, 1, and also one that did a sleep and then was killed by > > a signal (abnormal termination). > > > > Signed-off-by: Dwight Engen <dwight.en...@oracle.com> > > --- > > src/lxc/conf.c | 7 +++++-- > > 1 file changed, 5 insertions(+), 2 deletions(-) > > > > diff --git a/src/lxc/conf.c b/src/lxc/conf.c > > index 6b3f318..07529da 100644 > > --- a/src/lxc/conf.c > > +++ b/src/lxc/conf.c > > @@ -299,6 +299,7 @@ static int run_buffer(char *buffer) > > { > > FILE *f; > > char *output; > > + int ret; > > > > f = popen(buffer, "r"); > > if (!f) { > > @@ -317,8 +318,10 @@ static int run_buffer(char *buffer) > > > > free(output); > > > > - if (pclose(f) == -1) { > > - SYSERROR("Script exited on error"); > > + ret = pclose(f); > > + if (ret < 0 || !WIFEXITED(ret) || WEXITSTATUS(ret) != 0) { > > + SYSERROR("Script exited:%snormally with:%d", > > + WIFEXITED(ret) ? "" : "ab", > > WEXITSTATUS(ret)); > > I don't know pclose all that well... but the manpage says > The pclose() function returns -1 if wait4(2) returns an error, > or some other error is detected. > > You're treating it as though it contains the status filled in > by wait4 et al. Is that valid? > > not nack'ing, just not clear on what we can do with ret :) Yes RETURN VALUE section of the man page confused me as well upon first reading :) Then I found this https://groups.google.com/forum/?fromgroups=#!topic/utah-c/g4MpZVnJ7es which was helpful, but more importantly I did some testing with it to make sure it actually was the wait status. I did this by writing a pre-start hook script that returned different values and verified what I saw in the lxc log (which is why I added to that SYSERROR). I then read the full pclose man page and at the end of the DESCRIPTION section it says "The pclose() function waits for the associated process to terminate and returns the exit status of the command as returned by wait4(2)." so I'm pretty sure it does intend to return the exit status as opposed to code. > > return -1; > > } > > > > -- > > 1.7.12.3 > > > > > > ------------------------------------------------------------------------------ > > Precog is a next-generation analytics platform capable of advanced > > analytics on semi-structured data. The platform includes APIs for > > building apps and a phenomenal toolset for data science. Developers > > can use our toolset for easy data analysis & visualization. Get a > > free account! > > http://www2.precog.com/precogplatform/slashdotnewsletter > > _______________________________________________ Lxc-devel mailing > > list Lxc-devel@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/lxc-devel ------------------------------------------------------------------------------ Precog is a next-generation analytics platform capable of advanced analytics on semi-structured data. The platform includes APIs for building apps and a phenomenal toolset for data science. Developers can use our toolset for easy data analysis & visualization. Get a free account! http://www2.precog.com/precogplatform/slashdotnewsletter _______________________________________________ Lxc-devel mailing list Lxc-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/lxc-devel