Hola criaturitas,
Necesito un poco de ayuda con una práctica que tengo que entregar.
Creo que es bastante fácil, pero se me ha atascado.
Consiste en ejecutar dos comandos dado el directorio o fichero que va a ejecutar.
La ejecución tiene que ser la siguiente: ./program cmd1 cmd2 < entrada.txt > salida.txt
#include <sys/wait.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#define N 1024
int main(int argc, char * argv[]){
int nr,pid;
int p1[2]; //pipe1
char buffer[N];
pipe(p1); //Creamos el pipe1
//HIJO 1
pid=fork();
if (pid<0){ //Control de errores
perror("Error al crear el pid\n");
exit(EXIT_FAILURE);
}
if (pid==0){
close(p1[0]);
dup2(1,p1[1]);
execlp(argv[1],argv[1],NULL);
perror("Error al ejecutar el comando\n");
exit(EXIT_FAILURE);
}
//HIJO 2
pid=fork();
if (pid<0){ //Control de errores
perror("Error al crear el pid\n");
exit(EXIT_FAILURE);
}
if (pid==0){
close(p1[0]);
dup2(1,p1[1]);
execlp(argv[2],argv[2],NULL);
perror("Error al ejecutar el comando\n"); //Control de errores
exit(EXIT_FAILURE);
}
close(p1[0]);
close(p1[1]);
close(0);
close(1);
wait(NULL);
wait(NULL);
return 0;
}
No sé exactamente lo q me falla. Sé que hay variables que sobran, pero es algo que he ido reutilizando.
Muchas gracias