* tst-trans.c: Include <stdlib.h> and <string.h>.
[platform/upstream/glibc.git] / posix / test-vfork.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <unistd.h>
4 #include <error.h>
5 #include <errno.h>
6 #include <sys/wait.h>
7
8 void noop (void);
9
10 #define NR      2       /* Exit code of the child.  */
11
12 int
13 main (void)
14 {
15   pid_t pid;
16   int status;
17
18   printf ("Before vfork\n");
19   fflush (stdout);
20   pid = vfork ();
21   if (pid == 0)
22     {
23       /* This will clobber the return pc from vfork in the parent on
24          machines where it is stored on the stack, if vfork wasn't
25          implemented correctly, */
26       noop ();
27       _exit (NR);
28     }
29   else if (pid < 0)
30     error (1, errno, "vfork");
31   printf ("After vfork (parent)\n");
32   if (waitpid (0, &status, 0) != pid
33       || !WIFEXITED (status) || WEXITSTATUS (status) != NR)
34     exit (1);
35   exit (0);
36 }
37
38 void
39 noop ()
40 {
41 }