Article View: es.comp.os.linux.programacion
Article #8Re: controlar un programa desde otro
From: Lepton
Date: Fri, 04 Oct 2002 06:58
Date: Fri, 04 Oct 2002 06:58
53 lines
3158 bytes
3158 bytes
On Wed, 2 Oct 2002, Claudio S. wrote: # El Wed, 2 Oct 2002 17:40:01 +0200, Lepton <reinob@jazzfree.com> escribi�: # > # > [ Lo envio tambien a es.comp.hackers, ya que la idea ha # > originado alli (el servidor udp), y quiza alguien de # > alli tambien pueda ayudar :) ] # > # > Hola, # > # > Para un programilla que estoy haciendo, necesito ejecutar un # > programa (concretamente un shell /bin/sh), de forma que su # > stdin sea un pipe creado por mi, y lo mismo con su stdout (por # > ahora ignoraremos el stderr..) # > # > Mi idea era la siguiente: # > # > Usando pipe() genero un par de descriptores (in[0] e in[1]), de # > forma que yo leo de in[0] lo que el programa escribe en in[1]. # > # > De igual forma, con otro pipe() hago out[0] y out[1] de forma que # > lo que yo escribo en out[1] lo lee el programa en out[0]. # > # > Por tanto, tengo que conseguir que despues del fork() pero antes # > del exec() el stdin (descriptor 0) sea el mismo que out[0], y # > vice-versa, que el stdout (descriptor 1) sea el mismo que in[1]. # > # > Luego yo le envio caracteres al shell escribiendo en out[1], y # > leo lo que genera el shell de in[0]. # > # > El problema es que no se como hacer que stdin se asocie a otro # > descriptor, y lo mismo con stdout. # # dup # # (mensaje corto como el que m�s: solo tres letras y lo contesta todo). Gracias Claudio, pero creo que por ahi no va la cosa. El asunto es que el programa tiene un socket, por donde le llegan caracteres, y puede enviar caracteres (del/al cliente), pero quiero "forwardear" lo que llega del cliente a un hijo del servidor (un shell), y lo que sale del shell al cliente. He usado dup en otras ocasiones, pero creo que no es el caso. Si puedes darme un ejemplo concreto usando dup(), lo probare, pero no estoy seguro de que funcione. Supongo que al final tendre que hacerlo como lo hace el servidor de telnet (con pseudo-ttys, pero queria evitar eso!) Gracias de todos modos, Lepton.
Technical Details
Message-ID:
<Pine.LNX.4.44.0210040856270.541-100000@lorien.local>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news.tele.dk!small.news.tele.dk!193.174.75.178!news-fra1.dfn.de!fu-berlin.de!uni-berlin.de!c-134-125-49.d.dial.de.ignite.NET!not-for-mailReferences:
<Pine.LNX.4.44.0210021725480.3140-100000@lorien.local> <slrnapmmki.ece.claudio@nntp.tralari.com>Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII X-Google-Thread: f4463,f557a5b44ea0d9c4 X-Google-Attributes: gidf4463,public X-Google-Thread: f86c8,f557a5b44ea0d9c4 X-Google-Attributes: gidf86c8,public X-Google-ArrivalTime: 2002-10-04 00:19:37 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news.tele.dk!small.news.tele.dk!193.174.75.178!news-fra1.dfn.de!fu-berlin.de!uni-berlin.de!c-134-125-49.d.dial.de.ignite.NET!not-for-mail From: Lepton <reinob@jazzfree.com> Newsgroups: es.comp.os.linux.programacion,es.comp.hackers Subject: Re: controlar un programa desde otro Date: Fri, 4 Oct 2002 08:58:59 +0200 Lines: 55 Message-ID: <Pine.LNX.4.44.0210040856270.541-100000@lorien.local> References: <Pine.LNX.4.44.0210021725480.3140-100000@lorien.local> <slrnapmmki.ece.claudio@nntp.tralari.com> NNTP-Posting-Host: c-134-125-49.d.dial.de.ignite.net (62.134.125.49) Mime-Version: 1.0 Content-Type: TEXT/PLAIN; charset=iso-8859-15 Content-Transfer-Encoding: 8BIT X-Trace: fu-berlin.de 1033715974 15351184 62.134.125.49 (16 [130846]) X-Orig-Path: localhost!reinob In-Reply-To: <slrnapmmki.ece.claudio@nntp.tralari.com>