#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
#define N 10 /* number of child processes */
int main() {
   for (int i = 1; i <= N; ++i) {
      pid_t child = fork();
      if (child == -1) {
	 perror("unable to fork"); exit(1);
      }
      if (child == 0) {
	 /* child process */
	 _exit(i);
      }
   }
   /* parent process */
   pid_t child; int stat; int sum = 0;
   while ((child = wait(&stat)) >= 0) {
      if (WIFEXITED(stat)) {
	 sum += WEXITSTATUS(stat);
      } else {
	 printf("child %d terminated abnormally\n", (int) child);
      }
   }
   printf("sum = %d\n", sum);
}