Discussion:
Programme Perl avec Tk en arrière plan sans l'utilisateur loggé
(trop ancien pour répondre)
Yves Pointin
2012-09-07 12:09:43 UTC
Permalink
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-***@optinoinY.P';1 while
s/(.{3})(.{3})?/\$_{\$2}=\$1,\$2/e; ; print while \$_=\$_{\$_};"
Eric S.
2012-09-15 14:29:12 UTC
Permalink
Post by 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,
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.
schirrms2
2012-09-15 18:32:01 UTC
Permalink
Bonjour,
Post by Eric S.
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
Nicolas George
2012-09-15 19:00:03 UTC
Permalink
Post by schirrms2
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.
Yves Pointin
2012-09-18 08:07:53 UTC
Permalink
Le 15/09/2012 21:00, Nicolas George a écrit :
.....
Post by Nicolas George
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 "\$_='.frontermpclv-***@optinoinY.P';1 while
s/(.{3})(.{3})?/\$_{\$2}=\$1,\$2/e; ; print while \$_=\$_{\$_};"
Nicolas George
2012-09-18 08:32:48 UTC
Permalink
Post by Yves Pointin
Pour mon programme perl, j'ai en fait remplacé
Tk par GD.
Il y a un quelconque intérêt à GD par rapport à Cairo ?
Yves Pointin
2012-09-18 16:07:23 UTC
Permalink
Post by Yves Pointin
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 "\$_='.frontermpclv-***@optinoinY.P';1 while
s/(.{3})(.{3})?/\$_{\$2}=\$1,\$2/e; ; print while \$_=\$_{\$_};"
Loading...