🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: función leer

#6729
From: Horacio Miranda
Date: Mon, 19 May 2003 19:32
90 lines
3878 bytes
Para un poco, que cosa quieres hacer, escribir los c�digos del sort y del uniq ?
o quieres simular en un programa la ejecuci�n de "sort < nom.txt | uniq", ya que
de ser as� lo que debes hacer es redirigir la salida estandard de sort a la
entrada estandard de uniq y se acabo.

O lo que quieres es escribir cosas por teclado y que te las ordene ? define bien
tu proyecto antes de escribir t� c�dgio.

Tuareg ha escrito:

> 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);
> }

--
Atte., Horacio Miranda Aguilera

PostgreSQL.  Because life's too short to learn Oracle.    :)
Technical Details
Message-ID: <3EC9313A.F48FCF9A@yale.cl>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!logbridge.uoregon.edu!news-peer.gip.net!news.gsl.net!gip.net!news-santiago!nova.entelchile.net
References: <e2eee5e.0305181354.5648c48b@posting.google.com> <e2eee5e.0305190822.61450289@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-20 03:27:48 PST
Message-ID: <3EC9313A.F48FCF9A@yale.cl>
Date: Mon, 19 May 2003 15:32:10 -0400
From: Horacio Miranda <hmiranda@yale.cl>
X-Mailer: Mozilla 4.78 [es] (Win98; U)
X-Accept-Language: es
MIME-Version: 1.0
Newsgroups: es.comp.os.linux.programacion
Subject: Re: función leer
References: <e2eee5e.0305181354.5648c48b@posting.google.com> <e2eee5e.0305190822.61450289@posting.google.com>
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
NNTP-Posting-Host: 200.72.213.250
X-Original-NNTP-Posting-Host: 200.72.213.250
X-Trace: nova.entelchile.net 1053375762 200.72.213.250 (19 May 2003 16:22:42 -0400)
Lines: 92
X-Original-NNTP-Posting-Host: 200.72.213.250
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!logbridge.uoregon.edu!news-peer.gip.net!news.gsl.net!gip.net!news-santiago!nova.entelchile.net