microdroid_manager waits for task to exit

If microdroid_manager doesn't do the wait, the child process which might
not have run to completion is force killed by init, because
microdroid_manager is registered as a oneshot service.

Bug: N/A
Test: atest MicrodroidHostTestCases
Change-Id: I5748fbbb233182f0d8ca885bd94c7d15149aae82
diff --git a/microdroid_manager/src/main.rs b/microdroid_manager/src/main.rs
index ae72a59..b71daa8 100644
--- a/microdroid_manager/src/main.rs
+++ b/microdroid_manager/src/main.rs
@@ -57,8 +57,15 @@
 
 fn exec_task(task: &Task) -> Result<()> {
     info!("executing main task {:?}...", task);
-    build_command(task)?.spawn()?;
-    Ok(())
+    let exit_status = build_command(task)?.spawn()?.wait()?;
+    if exit_status.success() {
+        Ok(())
+    } else {
+        match exit_status.code() {
+            Some(code) => bail!("task exited with exit code: {}", code),
+            None => bail!("task terminated by signal"),
+        }
+    }
 }
 
 fn build_command(task: &Task) -> Result<Command> {