85 votes

Qu'est-ce que %0|%0 et comment cela fonctionne-t-il ?

Si vous exécutez un fichier .bat ou .cmd avec l'option %0|%0 à l'intérieur, votre ordinateur commence à utiliser beaucoup de mémoire et, après plusieurs minutes, il est redémarré. Pourquoi ce code bloque-t-il votre Windows ? Et que fait ce code par programmation ? Peut-il être considéré comme un "bug" ?

154voto

Jonathon Reinhart Points 40535

Il s'agit de la version Windows d'un bombe à fourche .

%0 est le nom du fichier batch en cours d'exécution. Un fichier batch qui ne contient que cette ligne :

%0|%0

va s'exécuter de manière récursive à l'infini, créant rapidement de nombreux processus et ralentissant le système.

Il ne s'agit pas d'un bogue dans Windows, mais d'une chose très stupide à faire dans un fichier batch.

40voto

Harrison Dyer Points 409

C'est ce que l'on appelle une bombe à fourche. Elle continue à se diviser jusqu'à ce qu'il n'y ait plus d'autre choix que de redémarrer le système. http://en.wikipedia.org/wiki/Fork_bomb

31voto

Samuel Liew Points 17275

Ce que c'est :

%0|%0 es un bombe à fourche . Il créera un autre processus à l'aide d'un tuyau | qui exécute une copie du même programme de manière asynchrone. Cela monopolise l'unité centrale et la mémoire, ralentissant le système au point de le rendre presque inopérant (voire de le faire planter).

Comment cela fonctionne-t-il ?

%0 fait référence à la commande utilisée pour exécuter le programme en cours. Par exemple, script.bat

Un tuyau | fera de la sortie ou du résultat de la première séquence de commandes l'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 elle exécutera simplement la deuxième séquence de commandes sans aucune entrée.

Élargir l'exemple, %0|%0 pourrait signifier script.bat|script.bat . Il s'exécute à nouveau, mais crée également un autre processus pour exécuter à nouveau le même programme (sans aucune entrée).

6voto

Edward Points 77

C'est une bombe logique qui se recrée sans cesse et qui utilise toutes les ressources de l'unité centrale. Il surcharge votre ordinateur avec trop de processus et le force à s'éteindre. Si vous créez un fichier batch avec ce programme et que vous le démarrez, vous pouvez l'arrêter en utilisant taskmgr. Vous devez le faire assez rapidement ou votre ordinateur sera trop lent pour faire quoi que ce soit.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X