Comment utiliser vfork depuis un script bash

0

Si nous voulons forkquelque 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?

Roel Van de Paar
la source
1
Voulez-vous que la fonctionnalité du blocage parent soit utilisée ou souhaitez-vous utiliser la vforkfonction 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éveloppement
Eric Renouf

Réponses:

0

Faire un grep -Ri vforkdans 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, echoon obtiendrait au mieux des résultats incomplets.

Vous pouvez également exécuter une commande en arrière-plan avec &, puis utiliser waitle bloc parent jusqu'à la fin de l'enfant.

Eric Renouf
la source
Oui toutes les bonnes pensées / commentaires. Nous avons un script qui fait BEAUCOUP de forking et nous voulons le rendre plus rapide. D'où la recherche dans vfork. Il doit sûrement y avoir un moyen d'appeler d'une manière ou d'une autre vfork au lieu de fork, même si nous devons écrire un petit wrapper en C ou autre chose. Ce serait bien de pouvoir facilement changer l' forkappel réel en quelque chose d'autre - en pseudo-code par exemple; vork=true; echo $(ls)
Roel Van de Paar le
Si les performances sont un problème, les scripts shell ne sont probablement pas la bonne solution. S'il y a juste une partie critique en termes de performances, vous pouvez écrire cela dans quelque chose de rapide comme C et vous pouvez appeler cela de bash, mais bash n'est pas vraiment conçu pour la vitesse
Eric Renouf