Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
6338 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Shell] fork et &

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Shell] fork et &

n°1766473
Tonio94
Posté le 29-07-2008 à 17:22:33  profilanswer
 

Bonjour,
 
 
J'aimerais savoir si le command & (pour mettre en background) équivaut au final à un fork en C qui va dupliquer le processus ?
 
 
Merci.

mood
Publicité
Posté le 29-07-2008 à 17:22:33  profilanswer
 

n°1766510
Elmoricq
Modérateur
Posté le 29-07-2008 à 18:18:48  profilanswer
 

Tout appel à un programme externe en shell est un fork.  
La seule différence entre une commande lancée avec '&' et sans, c'est que dans le premier cas le shell n'attend pas le retour du processus fils.
 
Exemple : je lance un "sleep" de une minute en arrière-plan, avec '&'. Puis je lance un ptree sur le PID courant ("$$" == PID courant) sans '&' et, comme le montre ptree lui-même, il est au même niveau que le sleep :

$ sleep 60 &
[1] 3486
$ ptree $$
165   /usr/sbin/inetd -s
  25367 in.rlogind
    25369 -csh
      25379 bash
        3486  sleep 60
        3487  ptree 25379

n°1766513
Sve@r
Posté le 29-07-2008 à 18:32:36  profilanswer
 

Tonio94 a écrit :

Bonjour,
 
 
J'aimerais savoir si le command & (pour mettre en background) équivaut au final à un fork en C qui va dupliquer le processus ?
 
 
Merci.


 
Ben en fait, quand ton shell reçoit l'ordre d'exécuter un programme, il commence par dupliquer son code (fork()) et c'est le coté fils qui va exécuter le programme pendant que le père attend la fin.
Et comme l'a dit Elmoricq, si tu rajoutes "&", alors le père n'attend plus.


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1767281
Tonio94
Posté le 31-07-2008 à 14:08:52  profilanswer
 

Merci à tous les deux pour ces réponses intéressantes :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Shell] fork et &

 

Sujets relatifs
Probleme : lancer une appli java en commande shell(résolu) [Shell] Afficher la commande avant exécution
[shell] Redirection entrée standard clavier[Shell] boucle avec des nom de fichier avec espace
[shell] Passer stdin à une commande passé au shell sur stdinEmulateur mini-shell
[Shell/Bash] variable dans la commande sed[Shell] test avec une variable
lire valeur sous le shell[C] implementation shell unix (fork, pipe)
Plus de sujets relatifs à : [Shell] fork et &


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)