infinite loop

11/12/2012 - 15:58 von Alexander Goetzenstein | Report spam
Hallo,
ich bin gerade über eine Warnung gestolpert, folgendes Kommando NICHT
auszuführen, weil es zu einer Endlosschleife führe, die nur durch einen
Reboot zu beenden sei:

:(){ :|:& };:

Kann mir jemand erklàren, was genau dabei passiert?


Gruß
Alex
 

Lesen sie die antworten

#1 Paul Hink
11/12/2012 - 16:17 | Warnen spam
Alexander Goetzenstein wrote:

ich bin gerade über eine Warnung gestolpert, folgendes Kommando NICHT
auszuführen, weil es zu einer Endlosschleife führe, die nur durch einen
Reboot zu beenden sei:



Eine Endlosschleife (genauer: Endlos-Rekursion) ist es, ja. Nur durch
einen Reboot zu beenden ist sie nicht unbedingt.

:(){ :|:& };:

Kann mir jemand erklàren, was genau dabei passiert?



Es wird zunàchst eine Shell-Funktion namens ":" definiert. Diese ruft
sich selbst zweimal (in einer Pipeline) auf. Die Kindprozesse werden
mittels "&" in den Hintergrund geschickt. Anschließend, durch das
Semikolon abgetrennt, wird - um die Rekursion zu starten - einmal die
Funktion ":" aufgerufen.

Man könnte die obige Zeile prinzipiell auch so schreiben, vielleicht
ist es dann leichter verstàndlich:

function x {
x | x &
}

x

Ähnliche fragen