Hola, de nuevo os pregunto sobre C, estoy dándole muchas vueltas y no comprendo porque puede ser el error.
Para mi programa estoy usando dup2() de esta forma, comprobando todos los errores que me puedan dar las llamadas al sistema:
fdIn=open(lectura,O_RDONLY); //Abro el fichero de lectura
valorIn=dup2(fdIn,0); //Cierra entrada estándar y duplica
closeIn=close(fdIn);
fdOut=open(escritura,O_CREAT,0700); //Abro el archivo de salida
valorOut=dup2(fdOut,1); //Cierra salida estándar y duplica
closeOut=close(fdOut);
execvp(aux[0],aux); //esto ejecuta un comando sin argumentos, por ejemplo un wc o un head
Lo que quiero hacer es abrir el fichero "lectura", que es un fichero que contiene texto y abrir, o crear en caso de que no exista, el ficero "escritura", al ejecutar el exec() quiero que "lectura" sustituya a la entrada estandar, y la salida estandar sea sustituida por "escritura", es decir, no escribo nada por teclado ni aparece nada en pantalla, por ejemplo, si el comando a ejecutar es un wc, en mi fichero "escritura" debería aparecer un número (resultado de haber contado palabras de "lectura")
Lo que me ocurre es que el segundo dup2 me da un error y no pasa de esa línea, ni siquiera devuelve un valor de error, lo que me aparece es esto al ejecutar:
wc: error de escritura: Descriptor de archivo inválido
No veo el error con el descriptor de fichero, duplico y cierro la salida estándar, para que me escriba en "escritura" y no por pantalla, alguien me puede ayudar? Espero haberme explicado bien.
Gracias adelantadas y por haberse leído este tochazo jeje.