[SSFR] Re: [SSFR] subshells et pensée globale ?

[ Thread Index | Date Index | More debianworld.org/shellscript-fr Archives ]


Bonjour Christophe,

le 05/08/2005,
Christophe Martin nous écrivait :
> Desole si ce message est en double, mais Je l'ai expedie le
> trois aout et, Anne ma soeur Anne, je ne vois toujours rien venir...

je n'ai effectivement pas de trace de ce premier message et suis parti
en vacances entre temps (ce qui explique mon retard pour la réponse).

> En utilisant Linux, ca fait clone(1) au lieu de [v]fork(1) ;-)

merci pour l'information ...

> Plus sérieusement, pour eviter fork dans $( ), il faut réécrire les
> scripts en utilisants des variables globales au lieu de l'affichage,
> car dès que tu utilises $( ), les shells fork/clone etc... certains
> le font même pour un interne comme echo...
> 
> Quant aux pipes, tu peux pas éviter le fork.

... et merci de confirmer mes craintes ... 

> 
> strace -e clone zsh ./toto
> avec FORK CLONE
> clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x401d70c8) = 19385
> --- SIGCHLD (Child exited) @ 0 (0) ---
> 687     undef
> clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x401d70c8) = 19386
> --- SIGCHLD (Child exited) @ 0 (0) ---
> 687     undef
> 687     1
> SANS FORK CLONE
> 19906   2
> 22911   3
> 1501    4

... démonstation à l'appui.

Ce qui m'embete avec l'histoire des variables globales, c'est qu'il faut
en connaitre les noms et créer des pseudo espaces de nommage pour ne pas
se marcher sur les pieds. Bref ... pas tres réutilisable, tout ca!

le plus lisible serait alors de transmettre systematiquement les
valeurs, qqchose du genre :

f ma_globale | read ma_globale 

je systematise alors l'utilisation des pipes, ce qui est nul en terme de
perfs.

> 
> Au passage, un truc marrant. C'est toujours le même nombre
> aléatoire qui sort avec zsh. mais bash sort des nombres différents...

tiens ? etrange : ici zsh renvoie bien des nombres aléatoires.



Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/