Uso de PIPE.

Dniel
21 de Enero del 2010
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.