diff options
Diffstat (limited to 'lib/mlibc/tests/posix/vfork.c')
-rw-r--r-- | lib/mlibc/tests/posix/vfork.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/lib/mlibc/tests/posix/vfork.c b/lib/mlibc/tests/posix/vfork.c new file mode 100644 index 0000000..5f8b71d --- /dev/null +++ b/lib/mlibc/tests/posix/vfork.c @@ -0,0 +1,28 @@ +#include <assert.h> +#include <pthread.h> +#include <stdio.h> +#include <stdlib.h> +#include <sys/wait.h> +#include <unistd.h> + +void prevent_atforks(void){ + exit(1); +} + +int main() { + pid_t pid; + int status; + assert(!pthread_atfork(prevent_atforks, NULL, NULL)); + + switch (pid = vfork()) { + case -1: + perror("vfork"); + abort(); + case 0: + _exit(12); + default: break; + } + + assert(wait(&status) == pid); + assert(WIFEXITED(status) && WEXITSTATUS(status) == 12); +} |