Article View: es.comp.os.linux.programacion
Article #9650Re: tuberias en c
From: J.A. Gutierrez
Date: Mon, 03 Jun 2002 10:16
Date: Mon, 03 Jun 2002 10:16
97 lines
2894 bytes
2894 bytes
Raul <nanukcid@hotmail.com> wrote:
: mandatos,pero la duda que tengo es como conectar la salida de cada
: comando, con la entrada del siguiente. Un saludo y gracias
/*
* (c) SPDsoft 1994
* 24 julio 1994
*
* Launch two processes:
* output cmd[0] -> input cmd[1]
* input cmd[0] <- output cmd[1]
*/
#include <stdio.h>
#include <errno.h>
#include <sys/types.h>
main(int argc, char **argv)
{
pid_t pid;
int pipefd[2][2];
int i;
char **cmd[2];
extern int errno;
char strerr[256];
cmd[0] = &argv[1];
cmd[1] = NULL;
for(i=1; ( i<argc)&&(strcmp(argv[i],";")!=0); i ++)
;
if ( i < argc -1 )
{
argv[i] = (char*) 0;
cmd[1] = &argv[i+1];
}
if (( argc < 4 ) || ( cmd[1] == NULL ))
{
sprintf(strerr,
"%s: SPDsoft 1994: Sixty-nine two processes\n"
"Usage: %s cmd1 [args] ; cmd2 [args]\n",
argv[0] , argv[0]);
write(2, strerr, strlen(strerr));
exit(-1);
}
pipe (pipefd[0]);
pipe (pipefd[1]);
if ((pid = fork()) == (pid_t)0)
{
close(0);
close(1);
dup (pipefd[1][0]);
dup (pipefd[0][1]);
close (pipefd[0][0]);
close (pipefd[1][1]);
execvp(*cmd[0], cmd[0]);
sprintf(strerr,"%s: Can't execvp %s (%s)\n",
argv[0], *cmd[0], strerror(errno));
write(2, strerr, strlen(strerr));
exit(errno);
}
else if (pid > (pid_t)0)
{
close(0);
close(1);
dup (pipefd[0][0]);
dup (pipefd[1][1]);
close (pipefd[1][0]);
close (pipefd[0][1]);
execvp(*cmd[1], cmd[1]);
sprintf(strerr,"%s: Can't execvp %s (%s)\n",
argv[0], *cmd[1], strerror(errno));
write(2, strerr, strlen(strerr));
exit(errno);
}
else
perror("fork");
exit(errno);
}
--
PGP and other useless info at \
http://www.cps.unizar.es/~spd/ \
finger://daphne.cps.unizar.es/spd \ Timeo Danaos et dona ferentes
ftp://ivo.cps.unizar.es/pub/ \ (Virgilio)
Technical Details
Message-ID:
<adffmp$8ll$1@news.unizar.es>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!newsfeed.icl.net!mango.news.easynet.net!easynet-melon!easynet.net!news.rediris.es!news.unizar.es!not-for-mailReferences:
<ad5q89$dio$1@nazgul.local>Show Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII-7-bit
X-Google-Thread: f86c8,950d722a991f38c4
X-Google-Attributes: gidf86c8,public
X-Google-ArrivalTime: 2002-06-03 02:44:07 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!newsfeed.icl.net!mango.news.easynet.net!easynet-melon!easynet.net!news.rediris.es!news.unizar.es!not-for-mail
From: "J.A. Gutierrez" <spd@daphne.cps.unizar.es>
Newsgroups: es.comp.os.linux.programacion
Subject: Re: tuberias en c
Date: 3 Jun 2002 10:16:57 GMT
Organization: Rank
Lines: 97
Message-ID: <adffmp$8ll$1@news.unizar.es>
References: <ad5q89$dio$1@nazgul.local>
NNTP-Posting-Host: daphne.cps.unizar.es
X-Trace: news.unizar.es 1023099417 8885 155.210.152.20 (3 Jun 2002 10:16:57 GMT)
X-Complaints-To: usenet@news.unizar.es
NNTP-Posting-Date: 3 Jun 2002 10:16:57 GMT
User-Agent: tin/1.4.5-20010409 ("One More Nightmare") (UNIX) (IRIX/6.2 (IP22))