🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: señales

#1110
From: David Serrano (Hue-Bond)
Date: Fri, 19 May 2006 02:22
81 lines
3730 bytes
J.A. Gutierrez, vie20060421@10:26:42(CEST):
> AnimAlf <AnimAlf@engendro.sytes.net> wrote:
>

Llego super tarde pero es que esto me interesaba y lo he ido dejando hasta
un Jueves aleatorio, o Viernes según se mire, a las 4 de la mañana.


>: =C2=BFC=C3=B3mo puedo detectar que termina una sesi=C3=B3n?
>
> 	Pues se me ocurren dos opciones
>
> 	a.- Tu programa abre una conexion X11. Al terminar la sesion
> 	se le cerrara y (no se muy bien por que mecanismo) las librerias
> 	de X11 te permitiran enterarte.

Me parece que su programa no abre una conexión X11 porque de ser así, él ya
sabría muy bien lo que pasa al cerrar las X. Si usa Gtk seguro que hay algo
de más alto nivel, y lo mismo con Tk o lo que sea. Así que partiendo de ahí
(su programa no se conecta a X), he hecho esta cosita:

-----------

#!/usr/bin/perl

use warnings;
use strict;

use Data::Dumper;   ## prescindible
use IO::Select;
use X11::Protocol;

$|++;               ## para mostrar debug y que aparezca ;)
my $X = X11::Protocol->new;
sub handle_event {  ## en mis pruebas, nunca se ha llamado a esta función
	my(%e) = @_;
	print Dumper \%e;
}
for (keys %SIG) {   ## cogemos todas las señales
	$SIG{$_} = sub { print "got signal $_[0]\n"; }
}

$X->{'event_handler'} = \&handle_event;
my $fds = IO::Select->new($X->connection->fh);
while ($fds->can_read) {   ## aquí el programa se bloquea
	print "IO::Select can read\n";
	$X->handle_input;
}

-----------

Lo ejecuto desde una xterm redirigiendo salida estándar a un archivo y
cierro las X. Desde la tty hago un cat al archivo y veo:

IO::Select can read

Así que aquí tenemos algo ya. Ahora, si esto es un falso positivo o no, ya
no lo sé. Dudo mucho que este programa reciba otros eventos, pero quizá el
suyo sí lo hace. Es notable que el programa sigue vivo, colgando de init. Ni
rastro de señales, según puede verse. Hasta que:

$ kill 26021
$ kill 26021
$ kill 26021
$ cat /tmp/x11-protocol
IO::Select can read
got signal TERM
got signal TERM
got signal TERM
$ kill -9 26021
$ kill -9 26021
-bash: kill: (26021) - No existe tal proceso
$ _

Animalf, espero que te sirva de algo. Ah, afortunadamente el módulo
X11::Protocol está empaquetado para Debian: libx11-protocol-perl. En mi
gentoo también lo veo: dev-perl/X11-Protocol. Si usas otra distro ya no sé.


-- 
 David Serrano
Technical Details
Message-ID: <slrne6qav2.nt9.responder_solo_en_el_grupo@genus.hue-bond.info>
Path: arc1-ca.pugleaf.net!g2news2.google.com!news4.google.com!news.glorb.com!fu-berlin.de!news.eteo.mondragon.edu!eteo.mondragon.edu!antonio.escomposlinux.org!cernicalo.escomposlinux.org!escomposlinux.org!not-for-mail
References: <1145457998.20049.12.camel@general.engendro.sytes.net> <e27gsp$7ds$1@appleseed.escomposlinux.org> <1145550442.29028.3.camel@general.engendro.sytes.net> <e2a502$t8d$1@appleseed.escomposlinux.org>

Show Full Headers
Complete Article Headers
X-Google-Thread: f86c8,53ddbc52f9b07e3
X-Google-Attributes: gidf86c8,public
X-Google-Language: SPANISH,UTF8
Path: arc1-ca.pugleaf.net!g2news2.google.com!news4.google.com!news.glorb.com!fu-berlin.de!news.eteo.mondragon.edu!eteo.mondragon.edu!antonio.escomposlinux.org!cernicalo.escomposlinux.org!escomposlinux.org!not-for-mail
From: "David Serrano (Hue-Bond)" <responder_solo_en_el_grupo@yahoo.es>
Newsgroups: es.comp.os.linux.programacion
Subject: Re: señales
Date: Fri, 19 May 2006 02:22:27 +0000 (UTC)
Organization: I work for myself
Lines: 81
Message-ID: <slrne6qav2.nt9.responder_solo_en_el_grupo@genus.hue-bond.info>
References: <1145457998.20049.12.camel@general.engendro.sytes.net> <e27gsp$7ds$1@appleseed.escomposlinux.org> <1145550442.29028.3.camel@general.engendro.sytes.net> <e2a502$t8d$1@appleseed.escomposlinux.org>
NNTP-Posting-Host: 102.red-80-39-208.dynamicip.rima-tde.net
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Trace: cormoran.emeteo.local 1148005347 16387 80.39.208.102 (19 May 2006 02:22:27 GMT)
X-Complaints-To: emeteo@escomposlinux.org
NNTP-Posting-Date: Fri, 19 May 2006 02:22:27 +0000 (UTC)
X-Message-Flag: Visit http://www.debian.org/
X-MSMail-Priority: High
Mail-Copies-To: nobody
User-Agent: slrn/0.9.8.1pl1 (Debian)