#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <unistd.h>



int main(int argc, char *argv[]) {
    pid_t pid;
    int x;
    int n;
   
    /* 
    if (argc != 2) {
       printf("uso: %s <n>. Try again!\n", argv[0]);
       exit(-1);
    }
    n = atoi(argv[1]);
    */
     
    pid = getpid() ;
    printf("Pai antes do Fork --- PID do pai : %d\n", pid);
    pid = fork();
    if (pid == -1) { 
	/* Erro do fork */
	perror("Erro no programa");
	exit(1);
    }
    else if (pid == 0) {
        /* Processo filho */
       printf("Filho apos o Fork --- o retorno de Fork foi: %d\n", pid);
       printf("Filho : getpid() retorna : %d\n", (int)getpid());
        /* Chama o executável 'foo' (situado em ./), com o argumento 10.
	 * Obs: verificar o PATH que deve incluir '.' !
	 */
       execlp("./foo", "foo", "10", NULL) ;
       printf("Isso nunca sera executado...\n");
       exit(1);  
    }
    else { /* Processo pai */
       printf("Pai apos o Fork --- Pid do processo filho: %d\n", pid);
       printf("Pai : getpid() retorna : %d\n", (int)getpid());
       /* Qualquer coisa */
       exit(0);
    }
    /* Nunca atingido, devido aos 'exit's... */
    return(0);
}
