SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: Dniel en Martes 19 de Enero de 2010, 17:03

Título: Uso de PIPE.
Publicado por: Dniel en Martes 19 de Enero de 2010, 17:03
Buenas, qué tal:

Me han encargado realizar un programa en lenguaje C que no sé cómo comenzar.

Se trata de implementar un programa que acepte tres o más argumentos (dos programas u órdenes como mínimo y un fichero de salida) y los conecte mediante una serie de PIPE (tuberías). El programa deberá ejecutar todas las instrucciones recibidas como parámetros redireccionando la salida del primer argumento con la entrada del segundo argumento, la salida del segundo argumento con la entrada del tercero, y así sucesivamente; para ello se deberán crear tantos procesos como sea necesario. Una vez se haya ejecutado la última instrucción, un proceso deberá guardar el contenido recibido en un fichero de salida.

La llamada a dicho programa será la siguiente:

./tubería <instruccion1> -. <instruccion2> -. … -. <instruccionN> ficheroSalida.txt

Por ejemplo:

./tubería ls -. sort -. wc –l ficheroSalida.txt

Entre cada instrucción y cada “-.” existe un espacio. Si al programa se le pasa como argumento un número menor a 2 instrucciones, un parámetro erróneo o no se incluye el fichero de salida, se mostrará un mensaje de error por pantalla indicándolo.

Tengo que utilizar las llamadas pipe, waitpid, dup y close para el encaminamiento de las PIPE. Las órdenes irán separadas por “-.” para diferenciarlas de los argumentos.

Si alguien sabría como comenzar o si tiene algo parecido implementado, que lo postee si no es demasiada molestia.

Gracias de antemano.
Título: Re: Uso de PIPE.
Publicado por: shakka en Martes 19 de Enero de 2010, 21:05
Aprender a procesar los parametros de una aplicacion con argv
http://www.zator.com/Cpp/E4_4_4.htm (http://www.zator.com/Cpp/E4_4_4.htm" onclick="window.open(this.href);return false;)

http://www.unix.com/high-level-programm ... ogram.html (http://www.unix.com/high-level-programming/58138-c-how-use-pipe-fork-stdin-stdout-another-program.html" onclick="window.open(this.href);return false;)
Título: Re: Uso de PIPE.
Publicado por: Dniel en Miércoles 20 de Enero de 2010, 10:13
Gracias por tu respuesta shakka.

Mi principal problema no radica en procesar los parámetros de una aplicación con argc y argv, lo he hecho en contadas ocasiones por lo que no me supone un problema, sin embargo, siempre lo he hecho con datos como enteros o caracteres, por lo que mi principal problema radica en si uno de los parámetros es, por ejemplo, ls, ¿cómo puedo hacer que el programa, al reconocer este comando, lo ejecute para hacer su cometido, es decir, para mostrar un listado del contenido del directorio en el que se encuentra?

Un saludo.