Article View: es.comp.os.linux.programacion
Article #1625Re: [BASH] Mandar información a la salida estándar de un programa
From: sio2
Date: Wed, 07 Sep 2005 20:01
Date: Wed, 07 Sep 2005 20:01
90 lines
5193 bytes
5193 bytes
El mi�, 07 de sep de 2005, a las 15:26 GMT, Benjam�n Albi�ana escribi�:
>> A ver si logro explicar lo que quiero hacer. Supongamos que uso cat:
>
> A riesgo de cagarla, �no ser�a mejor que usaras tee, en lugar de
> cat?
Gracias, pero no me has entendido: cat es s�lo un ejemplo. Todo esto lo
quiero poner en pr�ctica con mplayer en modo "slave". Y a�n con todo, yo
no tengo ning�n problema con stdout, sino con stdin.
En cualquier caso explico lo que quiero hacer en realidad, a ver si os
hac�is mejor la idea:
Hace tiempo me hice un peque�o dialecto XML para almacenar informaci�n
sobre emisoras de radio que emiten por internet, de tal manera que me
permite almacenar tanto url fijas (p.e. los stream que emiten las radios
en vivo) como url que incluyen la fecha (p.e. el programa de radio de
hoy que no he podido escuchar esta ma�ana porque estaba trabajando y me
gusta mucho). Y para hacer uso de este XML me cre� un script de bash,
que a trav�s de xsltproc lee el XML y gracias a mplayer reproduce. Por
ejemplo:
$ radio rne1 # Reproduce Radio 1 de RNE
$ radio despertador # Reproduce la �ltima arenga matutina de Jim�nez
# Losantos. Si es lunes, la del lunes; si es
# s�bado, la del viernes, porque los s�bados no
# hay.
(Todo esto lo explico con tanto detalle, porque a m� me es muy �til y
si alguno est� interesado, le paso lo que he hecho)
Hecho esto, se me ocurri� que, dado que uso fvwm2 y este gestor soporta
men�s generados din�micamente, pod�a hacer otro script que a partir del
XML me generase una secci�n del men� de fvwm2 cuyas entradas sean
emisoras/programas de emisoras. Invocado convenientemente el script en
la configuraci�n del fvwm2, cuando entro en el men� y pincho encima de
una de las emisoras/programas de radio, se lanza el mplayer y reproduce.
Hasta aqu� todo bien. Si pincho en la entrada "rne1", se hable gmplayer y
comienza a reproducir el stream de radio. Sin embargo, tiene un peque�o
defecto. Si a continuaci�n decido escuchar Onda Cero, y me voy al men�,
se lanza otro gmplayer. As� que antes de elegir Onda Cero, tengo que
salir manualmente del gmplayer que reproduc�a Radio Nacional.
Y llego, por fin, al meollo. Ayer, consultando la p�gina del manual de
mplayer, descubr� la opci�n -slave y se me ocurri� que era la soluci�n al
defecto. Si arranco mplayer en una consola as�:
$ mplayer -slave -quiet url1
mplayer comienza a reproducir la url1, pero se queda esperando �rdenes
que se pueden introducir por stdin (como hace "cat", de ah� mi ejemplo).
As� si p. e. escribo:
l url2
mplayer deja de reproducir url1 y comienza a reproducir url2. Al leer
esto se me ocurri� que las entradas del men�, en vez de lanzar a tontas
y a locas mplayer, podr�an comprobar si hay ya un mplayer ejecut�ndose.
Si no lo hay, lo lanza con la opci�n "-slave"; y si lo hay, le pasa "l
url2". Ese es mi problema, �c�mo paso esa orden al mplayer en ejecuci�n?
Y esto me parece a m� equivalente a ejecutar en una consola "cat" y,
que sea capaz de escuchar flujos de datos que yo le env�e desde otros
programas. Por ejemplo, abro un xterm hago un:
$ echo "l url2" > redireccionado_a_la_entrada_de_cat
y "cat" muestra "l url2". Y a continuaci�n abro otra xterm y lanzo ls:
$ ls > redireccionado_a_la_entrada_de_cat
y 'cat' captura el contenido del directorio.
He llegado a pensar que esto quiz�s se puede hacer a trav�s de inetd o
algo por el estilo. A fin de cuentas se parece mucho a un programa que
est� escuchando en un puerto.
Muchas gracias por tu inter�s.
--
Dejemos metaf�sicas quimeras;
vuesas mercedes garlen en chacota:
que no est� el mundo para hablar de veras.
--- Tom� de Burguillos ---
Si Di�xido de Silicio | Debian GNU/Linux
/ \ (SiO2) | Jos� Miguel S�nchez Al�s
O O Mineral de Cuarzo | sio2.ARROB@online.fr | URL #257033
Technical Details
Message-ID:
<slrndhuhob.pb0.sio2.ARROB@cebolleta.net.dhis.org>Path:
arc1-ca.pugleaf.net!g2news1.google.com!news4.google.com!newshub.sdsu.edu!tiscali!newsfeed1.ip.tiscali.net!proxad.net!infeed-1.proxad.net!news10-e.free.fr!not-for-mailReferences:
<slrndht92k.k12.sio2.ARROB@cebolleta.net.dhis.org> <slrndhu1l9.hc8.foobar@bastardo.eg>Show Full Headers
Complete Article Headers
X-Google-Thread: f86c8,6fb9d3e4d4e07c1b X-Google-Attributes: gidf86c8,public X-Google-Language: SPANISH,ASCII Path: arc1-ca.pugleaf.net!g2news1.google.com!news4.google.com!newshub.sdsu.edu!tiscali!newsfeed1.ip.tiscali.net!proxad.net!infeed-1.proxad.net!news10-e.free.fr!not-for-mail Newsgroups: es.comp.os.linux.programacion From: sio2 <sio2.ARROB@online.fr> Subject: Re: [BASH] Mandar información a la salida estándar de un programa References: <slrndht92k.k12.sio2.ARROB@cebolleta.net.dhis.org> <slrndhu1l9.hc8.foobar@bastardo.eg> Reply-To: sio2.ARROB@online.fr Message-ID: <slrndhuhob.pb0.sio2.ARROB@cebolleta.net.dhis.org> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit User-Agent: slrn/0.9.8.1 (Debian) Date: Wed, 7 Sep 2005 22:01:15 +0200 Lines: 90 Organization: Guest of ProXad - France NNTP-Posting-Date: 07 Sep 2005 22:10:11 MEST NNTP-Posting-Host: 83.46.3.200 X-Trace: 1126123811 news10-e.free.fr 4743 83.46.3.200:14501 X-Complaints-To: abuse@proxad.net