Article View: es.comp.os.linux.programacion
Article #6717Re: función leer
From: Tuareg
Date: Mon, 19 May 2003 16:22
Date: Mon, 19 May 2003 16:22
83 lines
2633 bytes
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-mailReferences:
<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