I need to create a program that creates n number of processes and displays information. When each process ends, I am to print it's PID and the exit status. The way I am doing it, the parent program waits to create the next process until the current one ends. I need it so that it keeps creating the child processes and just displays the exit information when ever one process ends without blocking the parent from continuing. I can;t figure out where to put my wait to ensure this. Below is my code:
int main (int argc, char *argv[])
{
  if (argc < 2)
  {
     printf("\n\nUsage: %s <enter a number (12 or less)>\n\n", argv[0]);
     exit (-1);
  }
  else
  {
    int *processNum = (int *)malloc(sizeof(12));
    int processNumTemp;
    processNumTemp = atoi(argv[1]);
    processNum = &processNumTemp;
  if(*processNum > 12 || *processNum < 1)
    {
      printf("\n\nUsage: %s <enter a number (12 or lrss)>\n\n", argv[0]);
    }
  else
    {
      parentInfo(processNum);
      createChildProcess(processNum);
    }
  }
 return 0;
}
//Name:  parentInfo
//Description:  Displays information about the parent process
//Parameters:  processNum - stores the number of child processes to create
//             (entered at the command line).
//Return:  none
void parentInfo(int *processNum)
{
 printf("Parent process ID:  %d\n", getppid());
 printf("Number of processes to create:  %d\n", *processNum);
}
//Name:  createChildProcess
//Description:  Creates n number of child processes.
//              For each child process, it says its a child process and it
//              displays its PID.
//              After each child process closes, the parent displays info.
//Parameters:  processNum - stores the number of child processes to create
//             (entered at the command line).
//Return:  none
void createChildProcess(int *processNum)
{
 int i;
 int childStatus;
 pid_t childpid;
 /*The for loop will create n number of processes based on the value of            processNum.*/
 for(i = 1; i <= *processNum; i++)
 childpid = fork();
  //Executes if fork didn't work
  if(childpid < 0)
    {
      perror("fork");
      exit(1);
    }
  //Executes if the fork worked
  else if( childpid == 0)
    {
      int pid = getpid();
      //Prints a message and the child processe's PID
      printf("\nHello I am a child process.\n");
      printf("My PID is %d. \n", getpid());
      for(int x = 1; x <= pid; x ++);
      exit(15);
    }
}
      //Executes after the child process has ended
      //Checks the child process's exit status
      waitpid(childpid, &childStatus, WUNTRACED);
      printf("\nPID of the child process that was just created:  %d.\n", childpid);
      if(WIFEXITED(childStatus))
        {
          printf("PID %d exited normally.  Exit number:  %d\n", childpid, WEXITSTATUS(childStatus));
        }
      else if(WIFSTOPPED(childStatus))
        {
          printf("PID %d was stopped by %d\n", childpid, WSTOPSIG(childStatus));
        }
      else if(WIFSIGNALED(childStatus))
        {
          printf("PID %d exited due to signal %d\n.", childpid, WTERMSIG(childStatus));
        }
      else
        {
          perror("waitpid");
        }
}