¡Hola!, esta es mi primera pregunta en el foro, así que intentaré ser lo suficientemente específico…
Estoy creando un programa que, básicamente, genere un proceso en UNIX de tipo wc -l por cada uno de los archivos que se le pasen por línea de comandos, esto es:
miwc file_1 file_2 ... file_n
El código es el siguiente:
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #define HIJO "wc" #define PATH "usr/bin/wc" int main(int argc, char **argv) { int i; /* Tratamiento de la linea de ordenes */ if(argc < 2) { fprintf(stderr, "ERROR: el numero de argumentos es incorrecto. Uso miwc [<file>*]\n"); return(EXIT_FAILURE); } /* Creacion de procesos hijo */ for(i = 0; i < argc - 1; i++) switch(fork()) { case -1: fprintf(stderr, "ERROR en la creacion de proceso hijo.\n"); return(EXIT_FAILURE); case 0: if(execl(PATH, HIJO, "-l", argv[i+1], NULL) == -1) { fprintf(stderr, "ERROR en la ejecucion de proceso hijo %d.\n", getpid()); exit(EXIT_FAILURE); } } printf("Todos los procesos han finalizado. Fin del programa.\n"); return EXIT_SUCCESS; }
El problema es que se produce un error en la ejecución de los procesos hijo, pero aparentemente creo que la función execl está correctamente construida.
¿Cuál puede ser el problema? ¿Estoy usando correctamente execl?