From c797a220d51d2796355fd60eca50523ffd6fb45e Mon Sep 17 00:00:00 2001 From: Christian Seiler Date: Mon, 20 May 2013 17:54:21 +0200 Subject: [PATCH] utils.c: Add lxc_wait_for_pid_status routine that returns exit code Signed-off-by: Christian Seiler Signed-off-by: Serge Hallyn --- src/lxc/utils.c | 16 ++++++++++++++++ src/lxc/utils.h | 3 +++ 2 files changed, 19 insertions(+) diff --git a/src/lxc/utils.c b/src/lxc/utils.c index cf42c385c..66bd19d09 100644 --- a/src/lxc/utils.c +++ b/src/lxc/utils.c @@ -265,3 +265,19 @@ again: return -1; return 0; } + +int lxc_wait_for_pid_status(pid_t pid) +{ + int status, ret; + +again: + ret = waitpid(pid, &status, 0); + if (ret == -1) { + if (errno == EINTR) + goto again; + return -1; + } + if (ret != pid) + goto again; + return status; +} diff --git a/src/lxc/utils.h b/src/lxc/utils.h index 09af34ac3..be1a8a8c3 100644 --- a/src/lxc/utils.h +++ b/src/lxc/utils.h @@ -23,6 +23,8 @@ #ifndef _utils_h #define _utils_h +#include + extern int lxc_setup_fs(void); extern int get_u16(unsigned short *val, const char *arg, int base); extern int mkdir_p(const char *dir, mode_t mode); @@ -64,5 +66,6 @@ extern int __build_bug_on_failed; * wait on a child we forked */ extern int wait_for_pid(pid_t pid); +extern int lxc_wait_for_pid_status(pid_t pid); #endif