13b290486cd4cd601b20e04340e593c9ed9717e5fsewardj#include <stdlib.h>
23b290486cd4cd601b20e04340e593c9ed9717e5fsewardj#include <stdio.h>
33b290486cd4cd601b20e04340e593c9ed9717e5fsewardj#include <errno.h>
4667c6777cad3b376c6d1c0887ca3939b5f400a48bart#include <unistd.h>
5667c6777cad3b376c6d1c0887ca3939b5f400a48bart#include <sys/wait.h>
6667c6777cad3b376c6d1c0887ca3939b5f400a48bartint main()
73b290486cd4cd601b20e04340e593c9ed9717e5fsewardj{
895d124852aafe22d75e72185d77a49424124cd64bart   int mem = 0, pid;
93b290486cd4cd601b20e04340e593c9ed9717e5fsewardj   pid = fork();
103b290486cd4cd601b20e04340e593c9ed9717e5fsewardj   if (pid == -1) {
113b290486cd4cd601b20e04340e593c9ed9717e5fsewardj      mem = 1;
123b290486cd4cd601b20e04340e593c9ed9717e5fsewardj      perror("fork");
133b290486cd4cd601b20e04340e593c9ed9717e5fsewardj      exit(1);
143b290486cd4cd601b20e04340e593c9ed9717e5fsewardj   }
153b290486cd4cd601b20e04340e593c9ed9717e5fsewardj
163b290486cd4cd601b20e04340e593c9ed9717e5fsewardj   if (pid == 0) {
1745fa417910da140c522eedd18153a2b1d8a9b35esewardj      int burn;
1845fa417910da140c522eedd18153a2b1d8a9b35esewardj      for (burn = 0; burn < 100000; burn++) /* burncpu */__asm__ __volatile("":::"memory") ;
193b290486cd4cd601b20e04340e593c9ed9717e5fsewardj      if (mem == 0)
203b290486cd4cd601b20e04340e593c9ed9717e5fsewardj         exit(0);
213b290486cd4cd601b20e04340e593c9ed9717e5fsewardj      else
223b290486cd4cd601b20e04340e593c9ed9717e5fsewardj         exit(1);
233b290486cd4cd601b20e04340e593c9ed9717e5fsewardj   } else {
243b290486cd4cd601b20e04340e593c9ed9717e5fsewardj      int ret;
253b290486cd4cd601b20e04340e593c9ed9717e5fsewardj      int status;
263b290486cd4cd601b20e04340e593c9ed9717e5fsewardj      while((ret = waitpid(pid, &status, 0)) != pid) {
273b290486cd4cd601b20e04340e593c9ed9717e5fsewardj         if (errno != EINTR) {
283b290486cd4cd601b20e04340e593c9ed9717e5fsewardj            perror("waitpid");
293b290486cd4cd601b20e04340e593c9ed9717e5fsewardj            exit(1);
303b290486cd4cd601b20e04340e593c9ed9717e5fsewardj         }
313b290486cd4cd601b20e04340e593c9ed9717e5fsewardj      }
323b290486cd4cd601b20e04340e593c9ed9717e5fsewardj      mem = status;
333b290486cd4cd601b20e04340e593c9ed9717e5fsewardj   }
343b290486cd4cd601b20e04340e593c9ed9717e5fsewardj   if (mem == 0)
353b290486cd4cd601b20e04340e593c9ed9717e5fsewardj      printf("mem is zero\n");
36667c6777cad3b376c6d1c0887ca3939b5f400a48bart
37667c6777cad3b376c6d1c0887ca3939b5f400a48bart   return 0;
383b290486cd4cd601b20e04340e593c9ed9717e5fsewardj}
39