/* Wait for child to finish. */
if (pid < 0)
- return -1;
+ return log_error(-1, "Failed to create child process");
- return wait_for_pid(pid);
+ ret = lxc_wait_for_pid_status(pid);
+ if (ret < 0)
+ return syserror("Failed to wait on child process %d", pid);
+ if (WIFSIGNALED(ret))
+ return log_error(-1, "Child process %d terminated by signal %ld", pid, WTERMSIG(ret));
+ if (!WIFEXITED(ret))
+ return log_error(-1, "Child did not termiate correctly");
+ if (WEXITSTATUS(ret))
+ return log_error(-1, "Child terminated with error %ld", WEXITSTATUS(ret));
+
+ return 0;
}
/* not thread-safe, do not use from api without first forking */