chiark / gitweb /
test: wait for cloned thread to exit
[elogind.git] / src / test / test-util.c
index 57fd19b2a31ace097cb90fcbcf2e7cb73c091a5a..93f11eb6e90a2e2e6aca3926a417d81473b87ae4 100644 (file)
@@ -1336,10 +1336,16 @@ static void test_raw_clone(void) {
         pid2 = raw_getpid();
         log_info("raw_clone: "PID_FMT" getpid()→"PID_FMT" raw_getpid()→"PID_FMT,
                  pid, getpid(), pid2);
-        if (pid == 0)
+        if (pid == 0) {
                 assert_se(pid2 != parent);
-        else
+                _exit(EXIT_SUCCESS);
+        } else {
+                int status;
+
                 assert_se(pid2 == parent);
+                waitpid(pid, &status, __WCLONE);
+                assert_se(WIFEXITED(status) && WEXITSTATUS(status) == EXIT_SUCCESS);
+        }
 }
 
 int main(int argc, char *argv[]) {