|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 3 of 9 v2] libxl: add libxl__forkexec function to libxl_exec
Roger Pau Monne writes ("[Xen-devel] [PATCH 3 of 9 v2] libxl: add
libxl__forkexe> + while (waitpid(pid, &status, 0) < 0) {
> + if (errno != EINTR) {
> + LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "waitpid failed\n");
> + rc = -1;
> + break;
> + }
> + }
It is good to see the exit status actually being retrieved and
checked. But:
> + if (WIFEXITED(status)) {
> + rc = WEXITSTATUS(status);
> + } else {
> + rc = -1;
> + }
I don't think this is the right thing to do with it.
Full and proper checking of a subprocess exit status involves:
* checking for WIFSIGNALED too and perhaps calling strsignal
* printing a message somewhere
I have found that the best way to deal with this is to split this up
into two parts:
- Functions which pass back the wait status without interpreting it,
and leaves checking it up to the caller
- A generic function for reporting the meaning of an exit status
to the log
It's also OK to have convenience functions which bundle these two
together, but the actual checking of an exit status involves logging.
Conveniently, I have already written the second function for you:
libxl_report_child_exitstatus :-).
Ian.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |