diff options
author | Mike Frysinger <vapier@gentoo.org> | 2009-04-04 22:59:42 -0400 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2009-04-05 03:54:02 -0400 |
commit | 16a11d0b67121521e4dbe12b4741217f97034c28 (patch) | |
tree | 8d995bd748e0c7e99c182cd1cb90dd8bbb90b586 /tests/vfork-0.c | |
parent | tests: fix openat arg parsing (diff) | |
download | sandbox-16a11d0b67121521e4dbe12b4741217f97034c28.tar.gz sandbox-16a11d0b67121521e4dbe12b4741217f97034c28.tar.bz2 sandbox-16a11d0b67121521e4dbe12b4741217f97034c28.zip |
tests: add some tracing tests
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'tests/vfork-0.c')
-rw-r--r-- | tests/vfork-0.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/tests/vfork-0.c b/tests/vfork-0.c new file mode 100644 index 0000000..94ef8fa --- /dev/null +++ b/tests/vfork-0.c @@ -0,0 +1,34 @@ +#include "tests.h" + +int main(int argc, char *argv[]) +{ + int ret = 0; + size_t i; + + if (argc == 1) { + printf("Usage: %s <prog> [prog...]\n", argv[0]); + return 1; + } + + for (i = 1; i < argc; ++i) { + switch (vfork()) { + case -1: + errp("vfork() failed"); + + case 0: { + char *new_argv[] = { argv[i], NULL }; + _exit(execvp(argv[i], new_argv)); + } + + default: { + int status; + if (wait(&status) == -1) + ret |= 1; + else if (!WIFEXITED(status) || WEXITSTATUS(status)) + ret |= 1; + } + } + } + + return 0; +} |