Si vous exécutez un fichier .bat ou .cmd avec %0|%0
à l'intérieur, votre ordinateur commence à utiliser beaucoup de mémoire et est redémarré après quelques minutes. Pourquoi ce code bloque-t-il Windows? Et que fait ce code par programmation? Pourrait-il être considéré comme un "bug"?
Ceci est la version Windows d'une bombe à retardement .
%0
est le nom du fichier batch en cours d’exécution. Un fichier batch contenant uniquement cette ligne:
%0|%0
S'exécutera de manière récursive pour toujours, créant rapidement de nombreux processus et ralentissant le système.
Ce n'est pas un bug dans Windows, c'est juste une chose très stupide à faire dans un fichier batch.
Ceci est connu comme une fourchette bombe. Il continue à se diviser jusqu'à ce qu'il n'y ait plus d'autre option que de redémarrer le système. http://en.wikipedia.org/wiki/Fork_bomb
%0|%0
Est un bombe à retardement. Cela engendrera un autre processus en utilisant un tube |
Qui exécute une copie du même programme de manière asynchrone. Cela piège le processeur et la mémoire, ce qui ralentit le système presque (voire le bloque).
%0
Fait référence à la commande utilisée pour exécuter le programme actuel. Par exemple, script.bat
Un symbole pipe |
Transformera la sortie ou le résultat de la première séquence de commandes en entrée de la deuxième séquence de commandes. Dans le cas d'une bombe à fourche, il n'y a pas de sortie, donc la seconde séquence de commande sera exécutée sans aucune entrée.
En développant l'exemple, %0|%0
Pourrait signifier script.bat|script.bat
. Cela s'exécute à nouveau, mais crée également un autre processus pour exécuter le même programme à nouveau (sans entrée).
C'est une bombe logique, elle continue de se recréer et utilise toutes vos ressources CPU. Il surcharge votre ordinateur avec trop de processus et le force à s’éteindre. Si vous créez un fichier de commandes contenant ce fichier et que vous le démarrez, vous pouvez le terminer à l'aide de taskmgr. Vous devez le faire assez rapidement ou votre ordinateur sera trop lent pour faire quoi que ce soit.