🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #6717

Re: función leer

#6717
From: Tuareg
Date: Mon, 19 May 2003 16:22
83 lines
2633 bytes
Tengo este programa que ordena palabras y elimina las duplicadas de un
fichero llamado nom.txt(una palabra por linea). Pero como podr�a hacer
para que todo esto lo hiciera de un grupo de palabras entradas por
teclado, separ�ndolas por intro. Y que al final las dejara en un
fichero o en pantalla, es indiferente.





* Programa que crea dos processos y los comunica por
una pipe ordinaria.

Equivale a:
	   # sort < nom.txt | uniq
Creamos una pipe y dos procesos, el primero proceso leera del
fichero nom.txt (un nombre por linea) y ejecutara un sort, con
el segundo proceso se eliminaran los duplicados.




#include <fcntl.h>
#include <stdio.h>
#include <errno.h>

#include <stdlib.h>


void error(char *m)
{
        write(2, m, strlen(m));
        write(2, "\n", 1);
        exit(1);    /* provoca la finalitzacion del proceso */
}

main()
{
	int p[2];
	int proces1, proces2, st1, st2;

	/* Creamos una pipe ordinaria y recibimos los files desc.de lectura y
	    escritura (p[0] i p[1] respectivament */
	if (pipe(p) < 0) error("Creando pipe ordin�ria");

	switch (proces1 = fork())
	{
		case -1 : error("Fork 1");

		case 0 : /* Proceso hijo 1  */
   			close(1); dup(p[1]);

			close (p[0]); close(p[1]);
   			execlp("sort", "sort", "nom.txt",  (char *)0);
   			error("executant ls ");

		default: /* Proceso padre */
			 break;
	}

	switch (proces2 = fork())
	{
		case -1 : error("Fork 2");

		case 0 : /* Proc�so hijo 2  */

			close(0); dup(p[0]); 

			close (p[0]); close(p[1]);

			execlp("uniq", "uniq",  (char *)0);

			error("ejecutando uniq ");

		default: /* Proceso padre */
			break;
	}

	close(p[0]); close(p[1]);
	/* Esperamos que acaben los 2 hijos */
	wait(&st1);
	wait(&st2);
}
Technical Details
Message-ID: <e2eee5e.0305190822.61450289@posting.google.com>
Path: arc1-ca.pugleaf.net!archiver1.google.com!postnews1.google.com!not-for-mail
References: <e2eee5e.0305181354.5648c48b@posting.google.com>

Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII
X-Google-Thread: f86c8,6217607b5fc9d798
X-Google-Attributes: gidf86c8,public
X-Google-ArrivalTime: 2003-05-19 09:22:39 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!postnews1.google.com!not-for-mail
From: duatlo@hotmail.com (Tuareg)
Newsgroups: es.comp.os.linux.programacion
Subject: Re: función leer
Date: 19 May 2003 09:22:39 -0700
Organization: http://groups.google.com/
Lines: 83
Message-ID: <e2eee5e.0305190822.61450289@posting.google.com>
References: <e2eee5e.0305181354.5648c48b@posting.google.com>
NNTP-Posting-Host: 80.58.35.42
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
X-Trace: posting.google.com 1053361359 14563 127.0.0.1 (19 May 2003 16:22:39 GMT)
X-Complaints-To: groups-abuse@google.com
NNTP-Posting-Date: 19 May 2003 16:22:39 GMT