fork et & [Shell] - Shell/Batch - Programmation
Marsh Posté le 29-07-2008 à 18:18:48
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 & |
Marsh Posté le 29-07-2008 à 18:32:36
Tonio94 a écrit : Bonjour, |
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.
Marsh Posté le 29-07-2008 à 17:22:33
Bonjour,
J'aimerais savoir si le command & (pour mettre en background) équivaut au final à un fork en C qui va dupliquer le processus ?
Merci.