[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 1/3] libxl: Make libxl_exec tolerate foofd<=2
Make passing 0, 1, or 2 as stdinfd, stdoutfd or stderrfd work properly. Also, document the meaning of the fd arguments. Signed-off-by: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx> CC: Roger Pau Monne <roger.pau@xxxxxxxxxx> CC: Vasiliy Tolstov <v.tolstov@xxxxxxxxx> CC: Ian Campbell <Ian.Campbell@xxxxxxxxxx> --- tools/libxl/libxl_exec.c | 6 +++--- tools/libxl/libxl_internal.h | 4 ++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/tools/libxl/libxl_exec.c b/tools/libxl/libxl_exec.c index 4b012dc..478b4c2 100644 --- a/tools/libxl/libxl_exec.c +++ b/tools/libxl/libxl_exec.c @@ -77,11 +77,11 @@ void libxl__exec(libxl__gc *gc, int stdinfd, int stdoutfd, int stderrfd, if (stderrfd != -1) dup2(stderrfd, STDERR_FILENO); - if (stdinfd != -1) + if (stdinfd > 2) close(stdinfd); - if (stdoutfd != -1 && stdoutfd != stdinfd) + if (stdoutfd > 2 && stdoutfd != stdinfd) close(stdoutfd); - if (stderrfd != -1 && stderrfd != stdinfd && stderrfd != stdoutfd) + if (stderrfd > 2 && stderrfd != stdinfd && stderrfd != stdoutfd) close(stderrfd); check_open_fds(arg0); diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h index 69d2ba8..6efaab8 100644 --- a/tools/libxl/libxl_internal.h +++ b/tools/libxl/libxl_internal.h @@ -1418,6 +1418,10 @@ _hidden int libxl__xenstore_child_wait_deprecated(libxl__gc *gc, * * The last entry of the array always has to be NULL. * + * stdinfd, stdoutfd, stderrfd will be dup2'd onto the corresponding + * fd in the child, if they are not -1. The original copy of the + * descriptor will be closed in the child (unless it's 0, 1 or 2). + * * Logs errors, never returns. */ _hidden void libxl__exec(libxl__gc *gc, int stdinfd, int stdoutfd, -- 1.7.10.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |