Le Monday 06 August 2001 09:26, Marc CHANTREUX a �crit:
> marcel web% echo prout
> prout
> marcel web% perl -e 'print "prout"'
> proutmarcel web% bash
> bash-2.04$ echo prout
> prout
> bash-2.04$ perl -e 'print "prout"'
> bash-2.04$
>
> moi ce que j'en conclus, c'est que bash ne transmet pas le filehandle de
> la console a perl.
>
> qq1 a une explication ? une tentative de solution ?

        C'est assez simple, meme si je vais peut-etre mal l'expliquer...

        Pour info, quand j'ai essay�, �a n'a pas march� du premier coup (pas besoin de 
sous shell pour que �a marche plus).

        Voil� : 
        Comme tu l'as remarqu� dans l'exemple que tu donnes, avec un echo tu as un 
retour � la ligne (ton prompt est sur la ligne en dessous et non pas coll� au mot 
comme c'est de le cas avec perl).

        Voici le patch :
        perl -e 'print "prout\n";'

        Eh oui, le \n est magique !

        Tu aurait fait un programme en C ou en n'importe quel language, �a aurait �t� 
pareil : si tu fais pas un retour � la ligne (ou mieux, un flush de tes buffers en 
cours), ben rien n'oblige le syst�me � vider les buffers juste apr�s la commande 
print, bref ton prout est pas perdu, il est en m�moire, mais pas sur la console (tu 
n'as pas perdu du tout la sortie standard).

        Bref, �a n'a rien � voir avec MDK8 ni MDK ni Linux, mais uniquement � la 
mani�re dont tu programmes !!! ;-)

        C'est une erreur assez fr�quente... quand on n'est pas au courant.

        Si qqun se sent + � meme d'expliquer la raison (est-ce une conformit� � POSIX, 
un respect de tel standard, sans doute un gain de performances, ...) qu'il n'h�site 
pas � approfondir ici, je suis preneur !

        A+
        
        Mathieu

Répondre à