Back to index

glibc  2.9
Defines | Functions
test-vfork.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <error.h>
#include <errno.h>
#include <sys/wait.h>

Go to the source code of this file.


#define NR   2 /* Exit code of the child. */


void __attribute_noinline__ noop (void)
int main (void)

Define Documentation

#define NR   2 /* Exit code of the child. */

Definition at line 10 of file test-vfork.c.

Function Documentation

int main ( void  )

Definition at line 13 of file test-vfork.c.

  pid_t pid;
  int status;

  printf ("Before vfork\n");
  fflush (stdout);
  pid = vfork ();
  if (pid == 0)
      /* This will clobber the return pc from vfork in the parent on
        machines where it is stored on the stack, if vfork wasn't
        implemented correctly, */
      noop ();
      _exit (NR);
  else if (pid < 0)
    error (1, errno, "vfork");
  printf ("After vfork (parent)\n");
  if (waitpid (0, &status, 0) != pid
      || !WIFEXITED (status) || WEXITSTATUS (status) != NR)
    exit (1);

  return 0;

Here is the call graph for this function:

void noop ( void  )

Definition at line 40 of file test-vfork.c.


Here is the caller graph for this function: