• Domingo 15 de Diciembre de 2024, 13:29

Autor Tema:  Uso de PIPE.  (Leído 957 veces)

Dniel

  • Visitante
Uso de PIPE.
« en: Martes 19 de Enero de 2010, 17:03 »
0
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.

shakka

  • Miembro HIPER activo
  • ****
  • Mensajes: 679
  • Nacionalidad: cr
    • Ver Perfil
    • http://mbrenes.com
Re: Uso de PIPE.
« Respuesta #1 en: Martes 19 de Enero de 2010, 21:05 »
0
Aprender a procesar los parametros de una aplicacion con argv
http://www.zator.com/Cpp/E4_4_4.htm

http://www.unix.com/high-level-programm ... ogram.html

Dniel

  • Visitante
Re: Uso de PIPE.
« Respuesta #2 en: Miércoles 20 de Enero de 2010, 10:13 »
0
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.