conmon: Return the exit status code
waitpid fills its second argument with a value that contains the process exit code in the 8 least significant bits. Instead of returning the complete value and then convert it from ocid, return the exit status directly by using WEXITSTATUS from conmon. Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
This commit is contained in:
parent
61e60bfe47
commit
9a4a1092fe
3 changed files with 5 additions and 8 deletions
|
@ -303,10 +303,12 @@ int main(int argc, char *argv[])
|
||||||
|
|
||||||
/* Wait for the container process and record its exit code */
|
/* Wait for the container process and record its exit code */
|
||||||
while ((pid = waitpid(-1, &status, 0)) > 0) {
|
while ((pid = waitpid(-1, &status, 0)) > 0) {
|
||||||
printf("PID %d exited\n", pid);
|
int exit_status = WEXITSTATUS(status);
|
||||||
|
|
||||||
|
printf("PID %d exited with status %d\n", pid, exit_status);
|
||||||
if (pid == cpid) {
|
if (pid == cpid) {
|
||||||
_cleanup_free_ char *status_str = NULL;
|
_cleanup_free_ char *status_str = NULL;
|
||||||
ret = asprintf(&status_str, "%d", status);
|
ret = asprintf(&status_str, "%d", exit_status);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
pexit("Failed to allocate memory for status");
|
pexit("Failed to allocate memory for status");
|
||||||
}
|
}
|
||||||
|
|
|
@ -335,7 +335,7 @@ func (r *Runtime) UpdateStatus(c *Container) error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("status code conversion failed: %v", err)
|
return fmt.Errorf("status code conversion failed: %v", err)
|
||||||
}
|
}
|
||||||
c.state.ExitCode = int32(utils.StatusToExitCode(statusCode))
|
c.state.ExitCode = int32(statusCode)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|
|
@ -125,8 +125,3 @@ func dockerRemove(container string) error {
|
||||||
_, err := ExecCmd("docker", "rm", container)
|
_, err := ExecCmd("docker", "rm", container)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// StatusToExitCode converts wait status code to an exit code
|
|
||||||
func StatusToExitCode(status int) int {
|
|
||||||
return ((status) & 0xff00) >> 8
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in a new issue