1#include <stdlib.h>
2#include <stdio.h>
3#include <errno.h>
4#include <unistd.h>
5#include <sys/wait.h>
6int main()
7{
8   int mem = 0, pid;
9   pid = fork();
10   if (pid == -1) {
11      mem = 1;
12      perror("fork");
13      exit(1);
14   }
15
16   if (pid == 0) {
17      int burn;
18      for (burn = 0; burn < 100000; burn++) /* burncpu */__asm__ __volatile("":::"memory") ;
19      if (mem == 0)
20         exit(0);
21      else
22         exit(1);
23   } else {
24      int ret;
25      int status;
26      while((ret = waitpid(pid, &status, 0)) != pid) {
27         if (errno != EINTR) {
28            perror("waitpid");
29            exit(1);
30         }
31      }
32      mem = status;
33   }
34   if (mem == 0)
35      printf("mem is zero\n");
36
37   return 0;
38}
39