Pregunta sencilla sobre c.

Hola,tengo este pequeño problema.estoy intentando pasar parametros a un programa en c desde el terminal.

Trato de pasar algo con este formato. ./nombre_programa fichero1 < fichero 2.

El problema es que el "<" es interpretado por el shell como redirección.Cuando yo lo que quiero es llamar a mi programa y pasarle los parametros.

Teniendo en la funcion main solo tengo esto para probar.

int main(int argc, char *argv1[])
{

printf(" argumento 1:%s , argumento2:%s, argumento3:%s \n",argv1[1],argv1[2],argv1[3]);
}

Si meto como parametros ficheros que no existen en vez de imprimirme los parametros me da un no existe el fichero o directorio.

¿Alguna idea?.
No creo que puedas evitar que el shell interprete el significado del "<", pero no entiendo el objetivo de querer usarlo como parametro de tu programa... es para indicar "hacer tal operacion del archivo 2 al archivo 1"? y en otras ocasiones pondrias "archivo1 > archivo2"? mejor te buscas otro caracter xD
Es que no puedo,hay esta la cosa.Es para diseñar un comando alternativo al "tee".Se supone que metes fichero destino < fichero.gz.Y luego internamente con forks dups hijos pipes zcats etc lo vuelcas al destino.

Entonces claro eso de que me coga el "<" no me sirve jaja.
tee y similares funcionan respetando la sintaxis de bash y cia, es decir, interpretando las redirecciones de stdin, stdout, stderr, respetalas tu tambien en tu programa, usa stdin en lugar de abrir un archivo, etc XD

Por otra parte, solo se me ocurre que podrias "escapar" el < o > con \ delante, pero vamos, eso y nada... xD
Como no lo metas todo junto como parámetro en una cadena (amos, entre comillas) o escapado, o uses stdin... No sé si hay forma de que la shell no lo interprete y lo meta como parámetros, pero ya habría que tocar algo de la shell ajeno al programa.
4 respuestas