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

#define MENSAJE "vivo (cntrl-c para terminar).."

void SigoVivo()
{
   write(1, MENSAJE, strlen (MENSAJE));
   while (1){
     write(1,".",1);
     sleep (1);
   }
}

int main(int argc, char *argv[])
{
   pid_t pid;
   int pplano=1;

   if (argv[1]==NULL){
        printf ("%s -sp para ejecutar xclock en segundo plano\n\tcualquier otro arg ejecuta xclock en primer plano\n",argv[0]);
        exit(0);
   }
   if (!strcmp(argv[1],"-sp"))
        pplano=0;
   printf ("ejecutando xclock en %s plano\n", pplano?"primer":"segundo");

   if ((pid=fork())==0) {
    if (execl("/usr/bin/xclock", "xclock", "-update", "1",NULL)==-1)
	  perror ("Error al intentar ejecutar xclock");
    if (kill (getppid(),SIGTERM)==-1)  /*terminamos el proceso padre*/
        perror("error en kill");
	exit(0);
   }
   if (pplano)
      waitpid(pid,NULL,0);
   SigoVivo();
   return 0;
}
