1 #include <stdlib.h> 2 #include <stdio.h> 3 #include <errno.h> 4 #include <unistd.h> 5 #include <sys/wait.h> 6 int 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