Programme Perl avec Tk en arrière plan sans l'utilisateur loggé

6 réponses
Avatar
Yves Pointin
Bonjour,

Mon problème est de faire exécuter sous Linux RedHat un programme Perl
utilisant Tk::Image en arrière plan régulièrement 24h/24 sans
l'utilisateur loggé. Si l'utilisateur est loggé, il a une fenêtre X11
et le programme s'exécute normalement. Si je ne délogge, j'ai le message

Xlib: connection to ":0.0" refused by server
Xlib: No protocol specified

couldn't connect to display ":0" at
/usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/Tk/MainWindow.pm
line 55.
MainWindow->new() at /home/pointin/bin/add_background.pl line 183
job 167694 at 2012-09-07 13:52

Comment faire ?

Cordialement,
--
Dr. POINTIN Yves B.
perl -e "\$_='.frontermpclv-bunigc.@optinoinY.P';1 while
s/(.{3})(.{3})?/\$_{\$2}=\$1,\$2/e; ; print while \$_=\$_{\$_};"

6 réponses

Avatar
eric
Yves Pointin wrote:

Bonjour,

Mon problème est de faire exécuter sous Linux RedHat un programme Perl
utilisant Tk::Image en arrière plan régulièrement 24h/24 sans
l'utilisateur loggé. Si l'utilisateur est loggé, il a une fenêtre X11
et le programme s'exécute normalement. Si je ne délogge, j'ai le message

Xlib: connection to ":0.0" refused by server
Xlib: No protocol specified

couldn't connect to display ":0" at
/usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/Tk/MainWindow.pm
line 55.
MainWindow->new() at /home/pointin/bin/add_background.pl line 183
job 167694 at 2012-09-07 13:52

Comment faire ?

Cordialement,



Bonjour,

Dsl pour cette réponse un peu tardive...
Ce que tu pourrais faire c'est de démarrer un serveur Xvfb sur un port
bien choisi. Par exemple : /usr/bin/Xvfb :99999 &
Tu peux mettre ça dans /etc/rc.local pour que ce soit exécuté à chaque
démarrage de la machine.

Ensuite quand tu peux lancer ton programme en lui spécifiant de se
connecter au port 99999.

Mes 2 cents.
--
Eric S.
Avatar
schirrms2
Bonjour,

Le 15/09/2012 16:29, Eric S. a écrit :
Ce que tu pourrais faire c'est de démarrer un serveur Xvfb sur un port
bien choisi. Par exemple : /usr/bin/Xvfb :99999 &



Mes 2 cents à moi :
Les n° de ports, bien qu'exprimés en décimal, sont des valeurs binaires
codés sur 16 bits (2^16) donc, en décimal, comprises entre 0 (à éviter
!) et 65535 (à éviter également)

Cordialement,
Pascal
Avatar
Nicolas George
schirrms2 , dans le message <5054c966$0$2360$, a
écrit :
Les n° de ports, bien qu'exprimés en décimal, sont des valeurs binaires
codés sur 16 bits (2^16) donc, en décimal, comprises entre 0 (à éviter
!) et 65535 (à éviter également)



0 n'est juste pas possible, puisqu'il a une signification particulière pour
l'API.

Mais si on va par là, on peut souligner que le numéro après les : dans un
nom de serveur n'est pas un port TCP/IP. Si le serveur écoute en TCP/IP, il
le fera sur le port n+6000, donc un serveur lancé sur un numéro plus grand
que 59536 ne pourra pas, mais il fonctionnera très bien avec une socket Unix
dans /tmp.
Avatar
Yves Pointin
Le 15/09/2012 21:00, Nicolas George a écrit :
.....

Mais si on va par là, on peut souligner que le numéro après les : dans un
nom de serveur n'est pas un port TCP/IP. Si le serveur écoute en TCP/IP, il
le fera sur le port n+6000, donc un serveur lancé sur un numéro plus grand
que 59536 ne pourra pas, mais il fonctionnera très bien avec une socket Unix
dans /tmp.


Bonjour,

Merci, j'essaierais mais plutôt pour scilab.5.* basé sur Tk pour lequel
j'avais le même problème. Pour mon programme perl, j'ai en fait remplacé
Tk par GD.

--
Dr. POINTIN Yves B.
perl -e "$_='';1 while
s/(.{3})(.{3})?/$_{$2}=$1,$2/e; ; print while $_=$_{$_};"
Avatar
Nicolas George
Yves Pointin , dans le message <50582bda$0$1693$,
a écrit :
Pour mon programme perl, j'ai en fait remplacé
Tk par GD.



Il y a un quelconque intérêt à GD par rapport à Cairo ?
Avatar
Yves Pointin
Le 18/09/2012 10:32, Nicolas George a écrit :
Yves Pointin , dans le message<50582bda$0$1693$,
a écrit :
Pour mon programme perl, j'ai en fait remplacé
Tk par GD.



Il y a un quelconque intérêt à GD par rapport à Cairo ?



Je ne sais pas, mais comme j'ai trouvé and GD comment faire ce que je
voulais faire (remplacer les pixels noirs d'une image PNG par ceux d'une
autre image de même taille), je n'ai pas cherché plus loin.

--
Dr. POINTIN Yves B.
perl -e "$_='';1 while
s/(.{3})(.{3})?/$_{$2}=$1,$2/e; ; print while $_=$_{$_};"