summaryrefslogtreecommitdiff
path: root/util-linux/unshare.c
diff options
context:
space:
mode:
Diffstat (limited to 'util-linux/unshare.c')
-rw-r--r--util-linux/unshare.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/util-linux/unshare.c b/util-linux/unshare.c
index a9f56f388..f58cdd93e 100644
--- a/util-linux/unshare.c
+++ b/util-linux/unshare.c
@@ -333,7 +333,14 @@ int unshare_main(int argc UNUSED_PARAM, char **argv)
* that'll become PID 1 in this new namespace.
*/
if (opts & OPT_fork) {
- xvfork_parent_waits_and_exits();
+ pid_t pid = xvfork();
+ if (pid > 0) {
+ /* Parent */
+ int exit_status = wait_for_exitstatus(pid);
+ if (WIFSIGNALED(exit_status))
+ kill_myself_with_sig(WTERMSIG(exit_status));
+ return WEXITSTATUS(exit_status);
+ }
/* Child continues */
}