Si nous voulons fork
quelque chose à l'intérieur d'un script bash (ou même au niveau de la ligne de commande), nous pouvons simplement l'entourer de $ () ou de contrôles en arrière. Par exemple;
echo $(ls)
- cela va brancher l'environnement actuel et exécuter ls dans le sous-shell (forké)
Comment pouvons-nous utiliser vfork
( http://man7.org/linux/man-pages/man2/vfork.2.html ) au lieu de la fonctionnalité standard de fork?
vfork
fonction elle-même? Si vous êtes vraiment préoccupé par les avantages en termes de performances, vous ne devriez probablement pas utiliser une sorte de shell comme langage de développementRéponses:
Faire un
grep -Ri vfork
dans le code source de bash ne trouve pas de résultats, il n’ya donc aucun moyen d’utiliser directement vfork à partir de bash.Si vous voulez juste quelque chose qui appelle un enfant et bloque le parent, eh bien, votre exemple de sous-shell le fait déjà. Sinon,
echo
on obtiendrait au mieux des résultats incomplets.Vous pouvez également exécuter une commande en arrière-plan avec
&
, puis utiliserwait
le bloc parent jusqu'à la fin de l'enfant.la source
fork
appel réel en quelque chose d'autre - en pseudo-code par exemple;vork=true; echo $(ls)