accès aux groupes de discussion, consultation et publication d'articles, recherche de "newsgroups"...
membres, identifiez-vous
é-mail Mot de passe
nouveau ? mot de passe oublié ?
Chargement... Chargement en cours...

Groupes français belges canadiens suisses internationaux Nétiquette
Échangez opinions et commentaires dans les forums de discussion.

Re: & et ; comment faire ?

 [  Nouvelle Discussion Nouvelle discussion  |  Répondre au groupe Répondre au groupe  |  fr.comp.os.unix ] 

Retour : Accueil du site fr comp os unix   charte stats de ce groupe


  Sujet:   Re: & et ; comment faire ?  
 De: cette.adre...@est.invalid (Stephane Chazelas)
 Groupes: fr.comp.os.unix
 Organisation: Aioe.org NNTP Server
 Date: 21. Apr 2008, 12:06:57
 References: 1 2 3 4
2008-04-21, 10:02(+02), Paul Gaborit:
>
> À (at) Mon, 21 Apr 2008 09:23:43 +0200 (CEST),
> Stephane Chazelas <cette.adresse@est.invalid> écrivait (wrote):
>> 2008-04-21, 08:13(+02), Mulan:
>> [...]
>>> Sinon, j'aurais proposé ceci:
>>>
>>> ( pwd &) ; ls
>>>
>>> qui est la solution classique. 
>> [...]
>>
>> Solution classique pour que le shell oublie le processus qui
>> execute "pwd" (pour que "wait" ne marche pas) car ca fait un
>> double fork, pas pour lancer pwd en background.
>>
>> pwd & ls
>
> Exact... Juste une question : est-ce la même chose si la première
> commande est une commande builtin ?

pwd &

generallement, fait un fork qui execute une fonction du shell
pwd est builtin ou fait un fork suivi d'un exec si pwd n'est pas
builtin.

pwd

execute une fonction du shell is pwd est builtin, ou fait un
fork suivi d'un exec (dans le fils) et un wait (dans le pere) si
pwd n'est pas builtin.

Pour (...), on peut mettre les versions recentes de ksh93 de
coté.

(pwd)

fait un fork suivi d'un wait dans le pere. Suivant les shells,
si pwd n'est pas builtin, il y aura un autre fork pour l'exec ou
pas pour les shells qui dont cette optimisation.

Dans

(pwd; :)

il y aura un autre fork dans tous les cas.

Les versions recentes de ksh93 ne font pas de fork
supplementaire dans (...). Il pousse l'optimisation a outrance,
et redefinit le comportement de "exit", "exec", "read", "trap",
des assignments... pour eviter les forks. Il fait aussi d'autres
optimisations pour eviter les fork dans $(...)

D'autres shells pourront eviter le fork si (...) est la derniere
/commande/ du script.

Dans:

(pwd &); :

On aura au moins un fork.

Internallement, le comportement des shells peut changer, mais le
comportement est censé etre le meme.

(...) cree un nouvel environnement, donc apres (set -e), (a=x),
(exit 3), (read foo), (exec 3> /x), on doit s'attendre a trouver
l'environnement original inchangé, que ca ait ete fait par un
fork() ou pas.

Et dans

cmd1 & cmd2

cmd1 et cmd2 doivent etre demarree en meme temps, que ce soit
par un autre process ou pas.

-- 
Stéphane


DateSujet  Auteur
01.01.
o 
Groups Explorer contact votre avis comment ça marche? rechercher un groupe suggérer un groupe abuse accueil du site   Imprimer cette page   Envoyer cette page à un(e) ami(e)