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?


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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.