Schreiben Sie ein Programm, das sich selbst löscht. Das genaue Verhalten kann zwar von der Implementierung bestimmt werden, es sollte jedoch mindestens versucht werden, die Datei zu entfernen, in der das Programm gespeichert war, bevor es nach besten Kräften ausgeführt wird.
Dies ist ein Beliebtheitswettbewerb , daher gewinnt die Antwort mit den meisten positiven Stimmen.
popularity-contest
AJMansfield
quelle
quelle
Antworten:
C + Unix
Gibt einen Shakespeare-Monolog aus, bevor er sich selbst löscht:
Ich dachte, ich füge besser eine Beschreibung hinzu, zum Wohle aller, die sich Gedanken über die Ausführung dieses Programms machen (ich kann nicht sagen, dass ich Ihnen die Schuld geben muss :-D). Es besteht fast ausschließlich aus einer einzelnen Textzeichenfolge
Das wird in einer
for()
Schleife mit einem inkrementierenden Zähler dekodierti
. Nach dem Überschreiten eines Leerzeichens (while ((c=*s++)==32);
) ruft das Programm das ursprüngliche Zeichen (c=(c-33+i)%94+32;
) ab und sendet es an stdout, es sei denn, es trifft auf ein "@" - Zeichen. In diesem Fall beginnt es eine neue Zeile und hält für 3 Sekunden an:Beim Verlassen der Schleife löscht sich das Programm selbst, indem es einen Systemaufruf mit einer Zeichenfolge ausführt, die durch Verketten des Befehls delete
rm
mit dem Namen des Programms (auf den das zweite Argument dermain()
Funktion verweist) erhalten wird:Der entschlüsselte Text stammt aus Hamlet .
quelle
#include
Bash
Du brauchst kein Programm. Nur dieser Knall oben in deiner Akte:
Dann können Sie alles in die Datei einfügen, was Sie wollen , einschließlich Code, der etwas Interessantes bewirkt, Code, der nicht kompiliert wird, Code in einer Sprache, die nicht existiert, oder Text in einer natürlichen Sprache. Es wird niemals ausgewertet, da die Datei an gesendet wird
rm
, wodurch der Inhalt einfach ignoriert und gelöscht wird.quelle
Commodore 64 BASIC
:) :)
quelle
OLD
eingeben, um das Programm wiederherzustellen, das vonNEW
:) entfernt wurdeJavaScript
Dieses Skript löscht diesen Beitrag!
Java
Löscht die Klassendatei, in der das Programm gespeichert ist, nachdem eine Benachrichtigung angezeigt wurde, die den Benutzer informiert.
quelle
Vermisse ich etwas oder kann es so einfach sein wie
? Sicher, abgesehen vom Offensichtlichen
rm -rf /*
quelle
Windows Batch
Erstellen Sie eine .bat-Datei mit dieser Zeile:
Es wird ein weiterer Thread gestartet, der die Batchdatei löscht
quelle
del %0.bat
.Python - Selbstmord ist schmerzlos
quelle
webbrowse
Windows Batch
ACHTUNG: nicht rennen! : P
quelle
Funktioniert nur auf einem ext2-ähnlichen Dateisystem, wird der Inhalt der aktuellen Datei durch Inode gelöscht
quelle
Mit Marvin the Paranoid zitiert Android aus The Hitchhiker's Guide to the Galaxy. Alle außer dem zu benennenden Skript delete-me mit dem üblichen Sprachsuffix und dass es sich im aktuellen Verzeichnis befindet. Genießen.
R7RS-Schema:
R6RS-Schema:
Schläger:
Bogen
Gemeines Lisp:
Dies funktioniert gut mit SBCL, aber ich beschwere mich, dass ich einen offenen Stream nicht löschen kann. Schätze, das ist nicht sehr kompatibel.
quelle
Python 2.7 - Python-Roulette
Dieses Skript soll als
bye.py
(ein 3-stelliger Name) gespeichert werden .WARNUNG : Dieses Skript löscht zufällig 3-Buchstaben-Python-Skripte (???. Py) in Ihrem aktuellen Arbeitsverzeichnis, bis es sich selbst löscht. Laufen Sie mit Vorsicht!
quelle
while not done:
wäre ein bisschen leichter zu verstehen alswhile done == False:
.ABAP
Es ist egal, wie Sie das Programm benennen, nicht als Include in etwas Wichtiges verwenden;)
quelle
PHP-Code, 18 Zeichen
Dies löscht das aktuell ausgeführte PHP-Skript.
quelle
Bash
rm "$0"
oder#!rm
Entfernt sich.
Python:
open(__file__,'w')
Öffnet sich im Schreibmodus und löscht sich
quelle
UNIX-Varianten
(einschließlich OSX und einigen Android-Handys)
Achtung: unsicher, nicht rennen!
Dadurch werden alle Daten von allen angeschlossenen Laufwerken gelöscht. Da dies alles löscht, sollten Sie dies nur in einer virtuellen Maschine mit einer ordnungsgemäßen Sicherung ausprobieren
Anmerkungen:
/dev/hdX
ist für alte einheiten/dev/sdX
ist für neue/dev/diskX
ist für OSX/dev/mmcblkX
ist für Androidquelle
PHP + LIFE
geprüft
quelle
?>
Tag vergessen . SIE VERLIERENK (8)
Q (14)
(Q ist ein ausführlicherer Klon von K, bei dem es sich im Wesentlichen um reine ASCII-APL handelt.)
quelle
Power Shell
Schreiben Sie diesen Code in eine beliebige PowerShell-Skriptdatei (
.ps1
) und führen Sie ihn aus.quelle
R
Speichern Sie Folgendes als
goodbye.R
und führen Sie Folgendes aus:Oder eine kürzere Version, aber weniger schön:
quelle