je cherche à faire tourner ce fichier (
http://mircscriptsfrfm.com/defis/client.txt ) qui est fourni avec l'aide de
perl pour windows (version 5.8). Je tourne sous Win2k sp 4.
J'ai essayé de me connecter à un serveur irc (celui que j'ai sur mon pc, et
aussi un vrai serveur undernet): il reçoit les données, mais je ne peux pas
lui en envoyer: ça bloque.
E:\>perl client.txt diemen.nl.eu.undernet.org 7000
[Connected to diemen.nl.eu.undernet.org:7000]
NOTICE AUTH :*** Looking up your hostname
NOTICE AUTH :*** Checking Ident
NOTICE AUTH :*** Found your hostname
nick tototo
Terminating on signal SIGINT(2) (ici j'ai fait ctrl-c)
Est ce que quelqu'un est assez balèze pour m'expliquer ce qui ne marche pas?
iL faut absolument que je comprenne le mécanisme des fork() et c'est la
seule base que j'ai. Evidemment j'ai bien les boules, vu que la seule base
en question est foireuse. Question subsidiaire: existe-t-il une autre
alternative à fork() pour pouvoir exécuter plusieurs processes en parallèle?
Ca m'arrangerait car je n'y comprends strictement que dalle, à fork (merci
de ne pas me préciser perldoc -f fork). En fait je cherche un truc qui
s'apparenterait à new Thead en java...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
ploum
"P.C." wrote in message <c95e9a$4td$:
Est ce que quelqu'un est assez balèze pour m'expliquer ce qui ne marche pas? iL faut absolument que je comprenne le mécanisme des fork() et c'est la seule base que j'ai. Evidemment j'ai bien les boules, vu que la seule base en question est foireuse. Question subsidiaire: existe-t-il une autre alternative à fork() pour pouvoir exécuter plusieurs processes en parallèle? Ca m'arrangerait car je n'y comprends strictement que dalle, à fork (merci de ne pas me préciser perldoc -f fork). En fait je cherche un truc qui s'apparenterait à new Thead en java...
Bonjour. Je n'ai pas le temps de regarder le programme, mais je peux essayer d'expliquer rapidement comment fork est sensé marcher.
Grosso modo, quand tu appelles fork, ton programme se duplique (chaque fils aura le même environnement, les mêmes FD, etc). Ils ont néanmoins un numéro de processus différents, ce qui permettra de les distinguer.
Quand on fait p=fork(), celà appelle fork, donc le processus se dédouble. p contient le numéro du processus enfant crée (si on est le père), ou 0 (si on est le fils, car lui n'a rien crée).
Typiquement, un code pour faire un serveur est ainsi:
while(paddr¬cept($CLIENT,$SERVEUR)) { my pid; if(! defined(pid=fork()) { die "Impossible de forker" } elsif($pid) { #on est le père, on sait qu'on a un enfant sous le nom de $pid next; #on attend une nouvelle connexion au serveur } else{ #$pid=0, je suis le fils traiter($client) } }
Ah oui, un dernier truc, quand le fils meurt, le père se prend un signal CHLD (en effet, il peut être utile de savoir si le fils a arrêté de travaillé). Il faut le traiter, sinon le fils devient un zombie.
Tout ça, c'est sous un unix. Maintenant je ne sais pas comment/si le fork est implémenté sous windows, ça fait longtemps que je n'ai plus fait de perl sous windows, il faudra que j'essaie.
-- Dam's
"P.C." wrote in message <c95e9a$4td$1@news-reader4.wanadoo.fr>:
Est ce que quelqu'un est assez balèze pour m'expliquer ce qui ne marche pas?
iL faut absolument que je comprenne le mécanisme des fork() et c'est la
seule base que j'ai. Evidemment j'ai bien les boules, vu que la seule base
en question est foireuse. Question subsidiaire: existe-t-il une autre
alternative à fork() pour pouvoir exécuter plusieurs processes en parallèle?
Ca m'arrangerait car je n'y comprends strictement que dalle, à fork (merci
de ne pas me préciser perldoc -f fork). En fait je cherche un truc qui
s'apparenterait à new Thead en java...
Bonjour.
Je n'ai pas le temps de regarder le programme, mais je peux essayer
d'expliquer rapidement comment fork est sensé marcher.
Grosso modo, quand tu appelles fork, ton programme se duplique (chaque
fils aura le même environnement, les mêmes FD, etc). Ils ont néanmoins
un numéro de processus différents, ce qui permettra de les distinguer.
Quand on fait p=fork(), celà appelle fork, donc le processus se
dédouble. p contient le numéro du processus enfant crée (si on est le
père), ou 0 (si on est le fils, car lui n'a rien crée).
Typiquement, un code pour faire un serveur est ainsi:
while(paddr¬cept($CLIENT,$SERVEUR)) {
my pid;
if(! defined(pid=fork()) {
die "Impossible de forker"
}
elsif($pid) {
#on est le père, on sait qu'on a un enfant sous le nom de $pid
next; #on attend une nouvelle connexion au serveur
}
else{
#$pid=0, je suis le fils
traiter($client)
}
}
Ah oui, un dernier truc, quand le fils meurt, le père se prend un signal
CHLD (en effet, il peut être utile de savoir si le fils a arrêté de
travaillé). Il faut le traiter, sinon le fils devient un zombie.
Tout ça, c'est sous un unix. Maintenant je ne sais pas comment/si le fork
est implémenté sous windows, ça fait longtemps que je n'ai plus fait de
perl sous windows, il faudra que j'essaie.
Est ce que quelqu'un est assez balèze pour m'expliquer ce qui ne marche pas? iL faut absolument que je comprenne le mécanisme des fork() et c'est la seule base que j'ai. Evidemment j'ai bien les boules, vu que la seule base en question est foireuse. Question subsidiaire: existe-t-il une autre alternative à fork() pour pouvoir exécuter plusieurs processes en parallèle? Ca m'arrangerait car je n'y comprends strictement que dalle, à fork (merci de ne pas me préciser perldoc -f fork). En fait je cherche un truc qui s'apparenterait à new Thead en java...
Bonjour. Je n'ai pas le temps de regarder le programme, mais je peux essayer d'expliquer rapidement comment fork est sensé marcher.
Grosso modo, quand tu appelles fork, ton programme se duplique (chaque fils aura le même environnement, les mêmes FD, etc). Ils ont néanmoins un numéro de processus différents, ce qui permettra de les distinguer.
Quand on fait p=fork(), celà appelle fork, donc le processus se dédouble. p contient le numéro du processus enfant crée (si on est le père), ou 0 (si on est le fils, car lui n'a rien crée).
Typiquement, un code pour faire un serveur est ainsi:
while(paddr¬cept($CLIENT,$SERVEUR)) { my pid; if(! defined(pid=fork()) { die "Impossible de forker" } elsif($pid) { #on est le père, on sait qu'on a un enfant sous le nom de $pid next; #on attend une nouvelle connexion au serveur } else{ #$pid=0, je suis le fils traiter($client) } }
Ah oui, un dernier truc, quand le fils meurt, le père se prend un signal CHLD (en effet, il peut être utile de savoir si le fils a arrêté de travaillé). Il faut le traiter, sinon le fils devient un zombie.
Tout ça, c'est sous un unix. Maintenant je ne sais pas comment/si le fork est implémenté sous windows, ça fait longtemps que je n'ai plus fait de perl sous windows, il faudra que j'essaie.
-- Dam's
Thibault
P.C. wrote:
Bonjour,
je cherche à faire tourner ce fichier ( http://mircscriptsfrfm.com/defis/client.txt ) qui est fourni avec l'aide de perl pour windows (version 5.8). Je tourne sous Win2k sp 4.
J'ai essayé de me connecter à un serveur irc (celui que j'ai sur mon pc, et aussi un vrai serveur undernet): il reçoit les données, mais je ne peux pas lui en envoyer: ça bloque.
E:>perl client.txt diemen.nl.eu.undernet.org 7000 [Connected to diemen.nl.eu.undernet.org:7000] NOTICE AUTH :*** Looking up your hostname NOTICE AUTH :*** Checking Ident NOTICE AUTH :*** Found your hostname nick tototo Terminating on signal SIGINT(2) (ici j'ai fait ctrl-c)
Est ce que quelqu'un est assez balèze pour m'expliquer ce qui ne marche pas? iL faut absolument que je comprenne le mécanisme des fork() et c'est la seule base que j'ai. Evidemment j'ai bien les boules, vu que la seule base en question est foireuse. Question subsidiaire: existe-t-il une autre alternative à fork() pour pouvoir exécuter plusieurs processes en parallèle? Ca m'arrangerait car je n'y comprends strictement que dalle, à fork (merci de ne pas me préciser perldoc -f fork). En fait je cherche un truc qui s'apparenterait à new Thead en java...
Bonjour, Ce script marche tres bien (en tout cas pour se connecter). Le truc c'est que le "nick toto" ne suffit généralement pas pour se connecter à un serveur IRC. il faut en plus se "register"
thibault:/tmp$ perl client.txt irc.librenet.net 6667 [Connected to irc.librenet.net:6667] nick tutu -> nick tutu user a b c d -> user a b c d :enix.librenet.fr-irc.net 001 tutu :Welcome to the eu-irc IRC Network tutu! ...
En ce qui concerne les fork, je ne suis pas vraiment un spécialiste, je laisserais les autres répondre :) mais en tout cas, ce script semble marcher correctement ...
A+ -- Thibault
P.C. wrote:
Bonjour,
je cherche à faire tourner ce fichier (
http://mircscriptsfrfm.com/defis/client.txt ) qui est fourni avec l'aide de
perl pour windows (version 5.8). Je tourne sous Win2k sp 4.
J'ai essayé de me connecter à un serveur irc (celui que j'ai sur mon pc, et
aussi un vrai serveur undernet): il reçoit les données, mais je ne peux pas
lui en envoyer: ça bloque.
E:>perl client.txt diemen.nl.eu.undernet.org 7000
[Connected to diemen.nl.eu.undernet.org:7000]
NOTICE AUTH :*** Looking up your hostname
NOTICE AUTH :*** Checking Ident
NOTICE AUTH :*** Found your hostname
nick tototo
Terminating on signal SIGINT(2) (ici j'ai fait ctrl-c)
Est ce que quelqu'un est assez balèze pour m'expliquer ce qui ne marche pas?
iL faut absolument que je comprenne le mécanisme des fork() et c'est la
seule base que j'ai. Evidemment j'ai bien les boules, vu que la seule base
en question est foireuse. Question subsidiaire: existe-t-il une autre
alternative à fork() pour pouvoir exécuter plusieurs processes en parallèle?
Ca m'arrangerait car je n'y comprends strictement que dalle, à fork (merci
de ne pas me préciser perldoc -f fork). En fait je cherche un truc qui
s'apparenterait à new Thead en java...
Bonjour,
Ce script marche tres bien (en tout cas pour se connecter).
Le truc c'est que le "nick toto" ne suffit généralement pas pour se
connecter à un serveur IRC. il faut en plus se "register"
thibault:/tmp$ perl client.txt irc.librenet.net 6667
[Connected to irc.librenet.net:6667]
nick tutu
-> nick tutu
user a b c d
-> user a b c d
:enix.librenet.fr-irc.net 001 tutu :Welcome to the eu-irc IRC Network
tutu!a@thibault.kicks-ass.net
...
En ce qui concerne les fork, je ne suis pas vraiment un spécialiste, je
laisserais les autres répondre :) mais en tout cas, ce script semble
marcher correctement ...
je cherche à faire tourner ce fichier ( http://mircscriptsfrfm.com/defis/client.txt ) qui est fourni avec l'aide de perl pour windows (version 5.8). Je tourne sous Win2k sp 4.
J'ai essayé de me connecter à un serveur irc (celui que j'ai sur mon pc, et aussi un vrai serveur undernet): il reçoit les données, mais je ne peux pas lui en envoyer: ça bloque.
E:>perl client.txt diemen.nl.eu.undernet.org 7000 [Connected to diemen.nl.eu.undernet.org:7000] NOTICE AUTH :*** Looking up your hostname NOTICE AUTH :*** Checking Ident NOTICE AUTH :*** Found your hostname nick tototo Terminating on signal SIGINT(2) (ici j'ai fait ctrl-c)
Est ce que quelqu'un est assez balèze pour m'expliquer ce qui ne marche pas? iL faut absolument que je comprenne le mécanisme des fork() et c'est la seule base que j'ai. Evidemment j'ai bien les boules, vu que la seule base en question est foireuse. Question subsidiaire: existe-t-il une autre alternative à fork() pour pouvoir exécuter plusieurs processes en parallèle? Ca m'arrangerait car je n'y comprends strictement que dalle, à fork (merci de ne pas me préciser perldoc -f fork). En fait je cherche un truc qui s'apparenterait à new Thead en java...
Bonjour, Ce script marche tres bien (en tout cas pour se connecter). Le truc c'est que le "nick toto" ne suffit généralement pas pour se connecter à un serveur IRC. il faut en plus se "register"
thibault:/tmp$ perl client.txt irc.librenet.net 6667 [Connected to irc.librenet.net:6667] nick tutu -> nick tutu user a b c d -> user a b c d :enix.librenet.fr-irc.net 001 tutu :Welcome to the eu-irc IRC Network tutu! ...
En ce qui concerne les fork, je ne suis pas vraiment un spécialiste, je laisserais les autres répondre :) mais en tout cas, ce script semble marcher correctement ...
A+ -- Thibault
P.C.
"Thibault" a écrit dans le message de news:c96rnn$1t8f$
Bonjour, Ce script marche tres bien (en tout cas pour se connecter). Le truc c'est que le "nick toto" ne suffit généralement pas pour se connecter à un serveur IRC. il faut en plus se "register"
Ouais mais non, bien sur je me doutais qu'on allait me faire cette réflexion, je connais assez les serveurs irc pour en avoir écrit un. Bien sur, quand on écrit user a b c d ou quoique ce soit d'autre, ça bloque: pas d'affichage, pas d'action. J'ai omis de le préciser.
Donc si le script marche chez vous, c'est que c'est un bug de ma version de Perl. Quelle version de Perl avez-vous et sous quel OS la faites-vous tourner? Personnellement j'ai Perl 5-8 ( ActivePerl-5.8.0.806-MSWin32-x86.msi ) et ça tourne sous Win2k sp 4. D'apres l'aide fournie, il semblerait que l'emulation de fork() sous WinNT et consors souffre de quelques bugs. Est-ce que l'exemple qu'ils donnent tombe en plein dedans? C'est ce que j'aurais voulu savoir.
Merci à nouveau de vos réponses,
P.C.
"Thibault" <thibault@_REMOVE_eulerian.com> a écrit dans le message de
news:c96rnn$1t8f$1@biggoron.nerim.net...
Bonjour,
Ce script marche tres bien (en tout cas pour se connecter).
Le truc c'est que le "nick toto" ne suffit généralement pas pour se
connecter à un serveur IRC. il faut en plus se "register"
Ouais mais non, bien sur je me doutais qu'on allait me faire cette
réflexion, je connais assez les serveurs irc pour en avoir écrit un. Bien
sur, quand on écrit user a b c d ou quoique ce soit d'autre, ça bloque: pas
d'affichage, pas d'action. J'ai omis de le préciser.
Donc si le script marche chez vous, c'est que c'est un bug de ma version de
Perl. Quelle version de Perl avez-vous et sous quel OS la faites-vous
tourner? Personnellement j'ai Perl 5-8 (
ActivePerl-5.8.0.806-MSWin32-x86.msi ) et ça tourne sous Win2k sp 4. D'apres
l'aide fournie, il semblerait que l'emulation de fork() sous WinNT et
consors souffre de quelques bugs. Est-ce que l'exemple qu'ils donnent tombe
en plein dedans? C'est ce que j'aurais voulu savoir.
"Thibault" a écrit dans le message de news:c96rnn$1t8f$
Bonjour, Ce script marche tres bien (en tout cas pour se connecter). Le truc c'est que le "nick toto" ne suffit généralement pas pour se connecter à un serveur IRC. il faut en plus se "register"
Ouais mais non, bien sur je me doutais qu'on allait me faire cette réflexion, je connais assez les serveurs irc pour en avoir écrit un. Bien sur, quand on écrit user a b c d ou quoique ce soit d'autre, ça bloque: pas d'affichage, pas d'action. J'ai omis de le préciser.
Donc si le script marche chez vous, c'est que c'est un bug de ma version de Perl. Quelle version de Perl avez-vous et sous quel OS la faites-vous tourner? Personnellement j'ai Perl 5-8 ( ActivePerl-5.8.0.806-MSWin32-x86.msi ) et ça tourne sous Win2k sp 4. D'apres l'aide fournie, il semblerait que l'emulation de fork() sous WinNT et consors souffre de quelques bugs. Est-ce que l'exemple qu'ils donnent tombe en plein dedans? C'est ce que j'aurais voulu savoir.
Merci à nouveau de vos réponses,
P.C.
Mildred
P.C. wrote:
Bonjour,
Est ce que quelqu'un est assez balèze pour m'expliquer ce qui ne marche pas? iL faut absolument que je comprenne le mécanisme des fork() et c'est la seule base que j'ai. Evidemment j'ai bien les boules, vu que la seule base en question est foireuse. Question subsidiaire: existe-t-il une autre alternative à fork() pour pouvoir exécuter plusieurs processes en parallèle? Ca m'arrangerait car je n'y comprends strictement que dalle, à fork (merci de ne pas me préciser perldoc -f fork). En fait je cherche un truc qui s'apparenterait à new Thead en java...
Merci de vos lumières,
bien à vous,
P.C.
Je n'ai pas grande idée de pourquoi ca ne fonctionen pas mais je peux taider un peu plus sur les thread Perl (je travaille dessus actuellement). Une très bonne page: http://www.enstimac.fr/Perl/DocFr/perlthrtut.html
Est ce que quelqu'un est assez balèze pour m'expliquer ce qui ne marche pas?
iL faut absolument que je comprenne le mécanisme des fork() et c'est la
seule base que j'ai. Evidemment j'ai bien les boules, vu que la seule base
en question est foireuse. Question subsidiaire: existe-t-il une autre
alternative à fork() pour pouvoir exécuter plusieurs processes en parallèle?
Ca m'arrangerait car je n'y comprends strictement que dalle, à fork (merci
de ne pas me préciser perldoc -f fork). En fait je cherche un truc qui
s'apparenterait à new Thead en java...
Merci de vos lumières,
bien à vous,
P.C.
Je n'ai pas grande idée de pourquoi ca ne fonctionen pas mais je peux
taider un peu plus sur les thread Perl (je travaille dessus actuellement).
Une très bonne page: http://www.enstimac.fr/Perl/DocFr/perlthrtut.html
Est ce que quelqu'un est assez balèze pour m'expliquer ce qui ne marche pas? iL faut absolument que je comprenne le mécanisme des fork() et c'est la seule base que j'ai. Evidemment j'ai bien les boules, vu que la seule base en question est foireuse. Question subsidiaire: existe-t-il une autre alternative à fork() pour pouvoir exécuter plusieurs processes en parallèle? Ca m'arrangerait car je n'y comprends strictement que dalle, à fork (merci de ne pas me préciser perldoc -f fork). En fait je cherche un truc qui s'apparenterait à new Thead en java...
Merci de vos lumières,
bien à vous,
P.C.
Je n'ai pas grande idée de pourquoi ca ne fonctionen pas mais je peux taider un peu plus sur les thread Perl (je travaille dessus actuellement). Une très bonne page: http://www.enstimac.fr/Perl/DocFr/perlthrtut.html
"Mildred" a écrit dans le message de news:40e8397e$0$18113$
Je n'ai pas grande idée de pourquoi ca ne fonctionen pas mais je peux taider un peu plus sur les thread Perl (je travaille dessus actuellement). Une très bonne page: http://www.enstimac.fr/Perl/DocFr/perlthrtut.html
Mildred
Merci Mildred. Aux lumieres de ce que j'ai appris, perl pour window ne sait pas emuler correctement fork, c'est la raison pour laquelle le petit exemple que j'ai donné ne tournait pas chez moi.
"Mildred" <silkensedai@online.fr> a écrit dans le message de
news:40e8397e$0$18113$626a14ce@news.free.fr...
Je n'ai pas grande idée de pourquoi ca ne fonctionen pas mais je peux
taider un peu plus sur les thread Perl (je travaille dessus actuellement).
Une très bonne page: http://www.enstimac.fr/Perl/DocFr/perlthrtut.html
Mildred
Merci Mildred. Aux lumieres de ce que j'ai appris, perl pour window ne sait
pas emuler correctement fork, c'est la raison pour laquelle le petit exemple
que j'ai donné ne tournait pas chez moi.
"Mildred" a écrit dans le message de news:40e8397e$0$18113$
Je n'ai pas grande idée de pourquoi ca ne fonctionen pas mais je peux taider un peu plus sur les thread Perl (je travaille dessus actuellement). Une très bonne page: http://www.enstimac.fr/Perl/DocFr/perlthrtut.html
Mildred
Merci Mildred. Aux lumieres de ce que j'ai appris, perl pour window ne sait pas emuler correctement fork, c'est la raison pour laquelle le petit exemple que j'ai donné ne tournait pas chez moi.