Endlosschleife



  • Allgemeine Frage.
    Endlosschleife in der Form von: while(1)
    laufen endlos, das hat bisher keiner angezweifelt.
    Ich tue das aber jetzt,...deswegen die Frage.

    Laufen die Schleifen tatsächlich endlos oder laufen sie nur so lange, dass ein Ende der schleife erst in vielen Tagen oder Jahren zu erwarten wäre.

    Warum komme ich darauf,....es könnte ja sein daß ein beliebiges Betriebssystem daher kommt und sagt der läuft solange und tut nix gescheites "beenden".
    Ist nur meine erste mögliche Idee warum sowas enden könnte.
    Bin auch für weitere Ideen warum Endlosprogramme sich beenden könnten.

    Die Frage ist tatsächlich allgemein gemeint, habe kein Programm oder ähnliches wo sowas geschiet. Ich mache mir lediglich nur darum Gedanken!

    Freue mich über jede Antwort,...falls welche kommen(ich bezweifle ja im übertragenem Sinne die Existenz von Gott 😉 )

    MfG Cordess



  • Aus sich heraus wird sich die Schleife nie beenden (wie auch?). Allerdings steht es dem Betriebssystem frei, dein Programm abzuschießen (z.B. indem du im Task-Manager auf "Task beenden" klickst) - das unterbricht natürlicherweise auch deine Endlosschleife.

    (und spätestens wenn der Anwender auf den Aus-Schalter drückt, ist Sense für dein Programm)



  • Gut das ist klar,...wenn der Rechner aus ist dann ist er aus :).
    Das mit dem Betriebssystem wüßte ich gerne genauer,...aber natürlich auch im möglichst allgemeinen Rahmen.
    Hab schon ein wenig Ahnung vom Programmieren,...von daher aus der Logik heraus sollte sich das Programm nie ändern(also auch ewig laufen).
    Möglicherweise ist mein Anzweifeln völlig unangebracht, aber ich dachte mir ein kritisches Hinterfragen kann nicht schaden.
    Und möglicherweise ist das zweifeln berechtigt, ich weiß es nur nicht ...

    Alles klar??? 😉

    Trotzdem Danke das einer auf meine Frage schon mal geantwortet hat...

    Cordess



  • Cordess123 schrieb:

    Das mit dem Betriebssystem wüßte ich gerne genauer,...aber natürlich auch im möglichst allgemeinen Rahmen.

    Moderne Betriebssystem sind Multi-Tasking-fähig, d.h. während dein Programm ruhig vor sich hin werkelt, kannst du parallel dazu noch im Internet surfen, malen, etc. Und das Betriebssystem kann (wenn nötig) auch ein laufendes Programm killen* - das bricht auch abrupt alles ab, was dieses Programm noch machen will.

    * Unter Windows klappt das über den Task-Manager: wenn du den aufrufst und "Task beenden" auswählst, schickt Windows zunächst eine Nachricht "bitte schließe dich" - wenn dort keine Reaktion kommt, erhältst du eine entsprechende Nachricht und nach Bestätigung wird das Programm pulverisiert.



  • afaik gibt es keine Logik in Betriebssystemen die erkennen würde das
    ein Programm nichts sinnvolles macht (wie auch?!ist auch besser so!)
    wie sollte man das auch unterscheiden?! Solange also die Schleife nicht
    unterbrochen wird (also durch "return" oder "break") sollte das Programm
    in seiner logischen Befehlsfolge weiterlaufen!(wenn es nicht vom
    Benutzer oder einem anderem Programm beendet wird!)



  • Basingstoke schrieb:

    afaik gibt es keine Logik in Betriebssystemen die erkennen würde das
    ein Programm nichts sinnvolles macht (wie auch?!ist auch besser so!)
    wie sollte man das auch unterscheiden?!

    Das Betriebsystem kann von sich aus nicht unterscheiden, ob das Programm etwas sinnvolles macht - aber es hat trotzdem die "Macht", es (auf Anforderung) zu beenden. (und zumindest Windows hat eine rudimentäre Erkennung, ob ein Programm noch aktiv ist)



  • Irgendwie bin ich traurig, habe ja schon damit gerechnet, dass jetzt keine Antworten kommen werden die ein großes AHAAAAA bringen.
    Nun ja, meine zweifel sollte ich damit einfach mal beseitigen.
    Alles was ihr geschrieben habt ist mir jetzt nicht neu, trotzdem Danke für eure Zeit...hatte irgendwie doch darauf gehofft das die zweifel berechtigt sind.

    Naja,....dann bleibt alles beim alten,...irgendwie schade ;).

    Cordess



  • Woran könntest du denn erkennen, daß ein Programm nichts 'sinnvolles' macht? Und wie bringst du das einem Rechner bei? 😉



  • Hmmmmm....stimmt....
    ich habs...ein neuronales Netz...das Trainieren wir mit Registermustern von sinnvollen laufenden Programmen und sinnlosen. Das Netz erkennt dann zusammenhänge von sinnvollen Programmen und ebenso von unsinnigen...das Netz ist dann in der Lage die unsinnigen rauszuschmeißen :).

    Cordess

    ps.: Ehrlichgesagt hoffe ich immer noch darauf das einer sagt das Endlosschleifen nicht endlos laufen...Hoffnung stirbt wohl doch zuletzt.



  • Cordess123 schrieb:

    ps.: Ehrlichgesagt hoffe ich immer noch darauf das einer sagt das Endlosschleifen nicht endlos laufen...Hoffnung stirbt wohl doch zuletzt.

    Diese Hoffnung kannst du begraben - wenn du dem Programm sagst, es soll endlos laufen, dann wird es von sich aus auch nichts dagegen machen.



  • Hm, ist schon wahr....
    das weiß ich ja,.... ich fand den Gedanken nur interessant...

    Ursprünglich kam ich auf diese Idee als ich für eine Datenbankanwendung einen Listener geschrieben habe. Dieser lief auf irgendeiner Maschine. Da wurde ein Pipe zwischen Datenbank und Anwendung geöffnet. Über die Pipe konnte man dann Systembefehle absetzen.
    Wenn die Pipe zusammenbricht hat das auch mein Programm nicht so gemocht...also ende des Programms...damals kam mir dieser Gedanke...denn es lief viele viele Tage und beendete sich plötzlich ohne einen bemerkbaren Grund.

    Aber klar...das gehört in den Bereich der Programmierfehler.

    Naja danke für eure Posts,...wiedereinmal...
    Cordess


Anmelden zum Antworten