#include<stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>

main(){
  extern **environ;
  char var[100];
  int i = 0;
  pid_t pID;
  char *val_argv[0];
  val_argv[0] = NULL;

  /* dump all envs */ 
  for(i; environ[i]!=NULL; i++)
    printf("%u %s\n",i, environ[i]); 

  pID = fork();
  if (pID == 0)                // child
  {
    /* exit when we reach 55 vars in total */
    /* 55 is 5 + total number of env vars you have in your env */
    if(i == 55){
      return(0);
    }

    /* keep adding new env vars */
    sprintf(var, "HOTVAR%d", i);
    setenv(var, "1", 0);
    sleep(1); /* wait till we can flush */

    execv("denv", val_argv);
  }
  else if (pID < 0)            // failed to fork
  {
      exit(1);
      // Throw exception
  }
  else                                   // parent
  {
    // Code only executed by parent process
    return(0);
  }

}
