#include <stdlib.h> #include <stdio.h> #include <errno.h> #include <unistd.h> #include <sys/wait.h> int main() { int mem = 0, pid; pid = fork(); if (pid == -1) { mem = 1; perror("fork"); exit(1); } if (pid == 0) { int burn; for (burn = 0; burn < 100000; burn++) /* burncpu */__asm__ __volatile("":::"memory") ; if (mem == 0) exit(0); else exit(1); } else { int ret; int status; while((ret = waitpid(pid, &status, 0)) != pid) { if (errno != EINTR) { perror("waitpid"); exit(1); } } mem = status; } if (mem == 0) printf("mem is zero\n"); return 0; }