43 lines
1.1 KiB
C
43 lines
1.1 KiB
C
// RUN: %clang %s -o %t && %run %t 2>&1 | FileCheck %s
|
|
//
|
|
// Older versions of Android do not have certain posix_spawn* functions.
|
|
// UNSUPPORTED: android
|
|
|
|
#include <assert.h>
|
|
#include <spawn.h>
|
|
#include <stdio.h>
|
|
#include <sys/wait.h>
|
|
|
|
int main(int argc, char **argv) {
|
|
if (argc > 1) {
|
|
// CHECK: SPAWNED
|
|
// CHECK: SPAWNED
|
|
printf("SPAWNED\n");
|
|
return 0;
|
|
}
|
|
|
|
posix_spawnattr_t attr = {0};
|
|
posix_spawn_file_actions_t file_actions = {0};
|
|
|
|
char *const args[] = {
|
|
argv[0], "2", "3", "4", "2", "3", "4", "2", "3", "4",
|
|
"2", "3", "4", "2", "3", "4", "2", "3", "4", NULL,
|
|
};
|
|
char *const env[] = {
|
|
"A=B", "A=B", "A=B", "A=B", "A=B", "A=B", "A=B", "A=B", "A=B", "A=B",
|
|
"A=B", "A=B", "A=B", "A=B", "A=B", "A=B", "A=B", "A=B", "A=B", NULL,
|
|
};
|
|
|
|
pid_t pid;
|
|
int s = posix_spawn(&pid, argv[0], &file_actions, &attr, args, env);
|
|
assert(!s);
|
|
|
|
waitpid(pid, &s, WUNTRACED | WCONTINUED);
|
|
|
|
s = posix_spawnp(&pid, argv[0], &file_actions, &attr, args, env);
|
|
assert(!s);
|
|
|
|
waitpid(pid, &s, WUNTRACED | WCONTINUED);
|
|
return 0;
|
|
}
|