› Foros › PC › Software libre
execvp("/usr/bin/free",NULL);
printf("HOLA MUNDO\n");
close(descfich);
DESCRIPCION
La familia de funciones exec reemplaza la imagen del proceso en curso
con una nueva. Las funciones descritas en esta pagina del Manual son
interfaces para la primitiva execve(2). (Consulte la pagina del Manual
de execve para informacion detallada acerca del reemplazo del proceso
en curso.)
pid=fork();
if (pid==0){
printf ("Soy el hijo");
}else{
printf ("Soy el padre");
if (pid<0)
printf ("Ha habido un error creando el hijo");
}
int tuberia(char **arg1,char **arg2)
{
int estatus1,estatus2;
pid_t pid1,pid2;
int pipes[2];
if(pipe (pipes))
{
printf ("No se puede hacer la tuberia. 1\n");
return(-1);
}
pid1=fork ();
if (pid1 < 0)
{
printf ("Pipe: No se puede ejecutar el proceso.\n");
exit (1);
}
if (pid1==0)
{
if(close(1))
{
printf ("No se puede hacer la tuberia. 2\n");
return (-1);
}
if(close(pipes[0]))
{
printf ("No se puede hacer la tuberia. 3\n");
return (-1);
}
if(-1==(dup(pipes[1])))
{
printf ("No se puede hacer la tuberia. 4\n");
return (-1);
}
execvp (arg1[0],arg1);
printf ("Pipe :%s comando no encontrado.\n",arg1[0]);
exit (1);
}
pid2=fork ();
if (pid2 < 0)
{
printf ("Pipe: No se puede ejecutar el proceso.\n");
exit (1);
}
if (pid2!=0)
{
if(close(0))
{
printf ("No se puede hacer la tuberia. 5\n");
return (-1);
}
if(close(pipes[1]))
{
printf ("No se puede hacer la tuberia. 6\n");
return (-1);
}
if(-1==(dup(pipes[0])))
{
printf ("No se puede hacer la tuberia. 7\n");
return (-1);
}
execvp (arg2[0],arg2);
printf ("Pipe :%s comando no encontrado.\n",arg2[0]);
exit (1);
}
waitpid(pid1,&estatus1,WUNTRACED);
waitpid(pid2,&estatus2,WUNTRACED);
return (estatus1*estatus2);
}