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