La commande exec est utilisée sous Linux pour appeler et exécuter des commandes spécifiées. La commande exec est généralement utilisée dans les scripts shell pour exécuter d'autres commandes. Lors de l'utilisation de la commande exec dans le terminal actuel, la commande spécifiée remplacera le processus actuel après l'exécution, au lieu de créer un nouveau processus enfant.
exec [选项]
Options | Signification |
---|---|
-c | Utilisez un environnement vide pour exécuter |
-a | Le shell transmettra le nom sans argument à la commande exécutée |
-l | Placez un tiret au début du shell pour passer des paramètres à la commande |
// 首先使用echo命令将文本“www.linuxyz.cn”进行输出: [root@bunian ~]# echo www.bunian.cn www.bunian.cn // 然后再使用exec命令调用echo命令输出同样的信息,并且对输出的信息进行对比,输入指令如下所示: [root@bunian ~]# exec -c echo www.bunian.cn www.bunian.cn // 通过比较两者执行后的结果来看,所实现的功能是相同的,即使用exec命令调用echo命令成功。
// 查找bunian.txt 并备份为bunian.txt.bak [root@bunian ~]# find /test -name "bunian.txt" -exec cp {} {}.bak \;
1. L'exécutable de l'appel système remplace le processus d'origine par un nouveau processus, mais le PID du processus reste inchangé. Par conséquent, on peut considérer que l’appel système exec ne crée pas de nouveau processus, mais remplace uniquement le contenu du contexte de processus d’origine. Le segment de code, le segment de données et le segment de pile du processus d'origine sont remplacés par le nouveau processus.
Une démarche comprend principalement les aspects suivants :
2. exec est un cluster de fonctions, composé de 6 fonctions, commençant par excl et execv.
Pour exécuter l'appel système exec, c'est généralement le cas. Utilisez la fonction fork() pour créer un nouveau processus, puis laissez le processus exécuter l'appel exec. Nous savons qu'après que fork() ait créé un nouveau processus, le processus parent partage le segment de code avec le processus enfant, mais l'espace de données est séparé, mais le processus parent copiera le contenu de son propre espace de données dans le processus enfant, et le contexte sera également copié dans le processus enfant. Afin d'améliorer l'efficacité, une stratégie de copie sur écriture est adoptée, c'est-à-dire que lorsqu'un processus enfant est créé, l'espace d'adressage du processus parent n'est pas copié. Les processus parent et enfant ont un espace d'adressage commun, et uniquement. lorsque le processus enfant a besoin d'écrire des données (par exemple, pour écrire des données dans le tampon), à ce moment-là, l'espace d'adressage sera copié et le tampon sera copié dans le processus enfant. En conséquence, les processus parent et enfant disposent d’espaces d’adressage indépendants. Pour exec après fork(), cette stratégie peut grandement améliorer l'efficacité si vous copiez au début, puis après exec, les données du processus enfant seront abandonnées et remplacées par un nouveau processus.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!