🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Coger la salida de otro programa

#17755
From: gpanjav
Date: Mon, 15 Nov 1999 00:00
37 lines
2392 bytes
rvm <rvm@XXlinuxfan.com> escribi� en es.comp.os.linux.programacion:
> Esto lo he hecho desviando la salida a un fichero temporal y luego el
> programa principal lee los datos de all� (de vez en cuando comprueba si
> el fichero ha sido modificado y lee los datos nuevos). 

	En el Linux Programmer's Guide, hay una secci�n que habla de
tuber�as con un ejemplo muy bueno. 

	Puedes utilizar popen() (como ya te han indicado) o hacer algo as�:

		-Crear una tuberia (pipe())
		-Hacer un fork()
		-En el proceso padre:
			*Cerrar la tuber�a de escritura
			*Leer de la tuber�a de lectura (cuidado con
			SIGPIPE!)
		-En el proceso hijo:
			*Cerrar la tuber�a de lectura
			*Utilizar la funci�n dup2() para poner la tuber�a de
			lectura como stdout y stderr del proceso.
			*Ejecutar el programa (elige una de exec*)

	A m� me gusta m�s as� y es m�s instructivo porque as� te enteras
mejor de lo que hace popen(). Si quieres busco un trocito de c�digo que
hace todo esto y lo 'posteo'.

> Otra pregunta. Resulta que el programa fetchnews no es accesible por
> cualquier usuario, pero mi programa debe poder ejecutarlo �c�mo diablos
> lo hago? Me imagino que la soluci�n pasar� por activar el bit suid ese,
> como en el kppp.

	Esto hay muchas formas de hacerlo. Una de ellas, podr�a ser:
		# chmod 4710 /usr/local/sbin/fetchnews
		# chown root.wheel /usr/local/sbin/fetchnews
	y hacer que el usuario que ejecuta el programa pertenezca al grupo
	wheel (o que el programa pertenezca al grupo wheel y el bit de guid
	activo (permisos 2700 o similares)).
Technical Details
Message-ID: <80oij9$ol8$1@simancas.uva.es>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail
References: <begX3.1887$re6.65702@m2newsread.uni2.es>

Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII
X-Google-Thread: f86c8,979d773d4b6ea533
X-Google-Attributes: gidf86c8,public
From: gpanjav@QUITAetsi.tel.uva.esPAM
Subject: Re: Coger la salida de otro programa
Date: 1999/11/15
Message-ID: <80oij9$ol8$1@simancas.uva.es>
X-Deja-AN: 548756421
Content-Transfer-Encoding: 8bit
References: <begX3.1887$re6.65702@m2newsread.uni2.es>
Content-Type: text/plain; charset=ISO-8859-1
X-Complaints-To: usenet@news.uva.es
X-Trace: simancas.uva.es 942656937 25256 157.88.129.100 (15 Nov 1999 09:08:57 GMT)
Organization: Universidad de Valladolid - Spain
Mime-Version: 1.0
User-Agent: tin/pre-1.4-981002 ("Phobia") (UNIX) (SunOS/5.6 (sun4u))
NNTP-Posting-Date: 15 Nov 1999 09:08:57 GMT
Newsgroups: es.comp.os.linux.programacion