Desafío: escriba un fragmento de código que se cierre [cerrado]

39

Estoy buscando (¿o sí?) Un fragmento de código que se cierra inmediatamente, de una manera absolutamente poco convencional.

Esto no significa: System.exit((int) 'A');(Java).

Podría significar:

#!/usr/bin/env python3
# NOTE: This kills ALL RUNNING Python processes. Be careful!
def exit():
    import os
    os.system("killall python3")
    # Windows addon
    os.system("taskkill /im python.exe /f")
exit()

¡La respuesta más votada gana! Todos los idiomas, todas las arquitecturas.

Editar: ¡ Renunciar lanzando excepciones ya no será aceptado!

s3lph
fuente
3
Pero eso no es poco convencionales para finalizar la ejecución ... Bueno, es una alternativa a exit(), pero aún así es una característica implementada ...
s3lph
13
Esto no es trolling de código: sabemos que queremos respuestas extrañas de este.
Liam Dawson
66
¿Apagar el sistema funciona?
Hosch250
8
Una vez accidentalmente causé una tarjeta de red a DMA a través del sistema operativo. Cuando sucedió, volviste instantáneamente a la BIOS, reiniciando.
Ben Jackson
3
Siento que Shannon nos tiene vencidos aquí;)
estrella brillante

Respuestas:

44

bash, 6 caracteres

exec [

execreemplaza el proceso actual con algo más. [es el comando más corto que pude encontrar que es inofensivo (es un alias para test)

Dennis Kaarsemaker
fuente
¿Otra excepción?
Johannes Kuhn
No, solo execel [comando :)
Dennis Kaarsemaker
1
por que esta funcionando ¿Que es lo que hace?
s3lph
@the_Seppi reemplaza el proceso actual con [(también conocido como prueba)
Timtech
~ $ echo $PATH/?-> /bin/X /bin/[ /bin/w. Fish shell me dio otros dos comandos. wEs interesante en mi opinión.
Konrad Borowski
46

Golpetazo

echo "Turn off your computer or i'll wipe your harddrive..."
echo 3;sleep 1
echo 2;sleep 1
echo 1;sleep 1
dd if=/dev/random of=/dev/hda

Termina el programa tan rápido como el usuario puede reaccionar ;-)

Daniel
fuente
10
Votar porque me hizo reír.
Michael Stern
55
Mejor no lo ejecutes en Linux.
kenorb
1
dd: / dev / hda: no encontrado
Joshua
39

Código Rojo

(Antecedentes: Redcode es el lenguaje de pseudoensamblaje utilizado en el juego de programación Core War introducido por AK Dewdney en 1984. Por lo general, hace un uso intensivo del código de modificación automática . Hace unos años escribí un pequeño tutorial sobre programación de Redcode . )

MOV 1, 0

Este programa de instrucción única no solo se suicida, sino que también borra su propio código de programa de la memoria, sin dejar rastro de sí mismo en la memoria.

Aburrido, dices? Después de todo, el programa anterior habría muerto de todos modos, incluso si no hubiera sobrescrito su código. OK, aquí hay uno que limpia todo el núcleo antes de finalmente limpiarse y morir:

loop: MOV  ptr+1, >ptr 
      JMN  loop, loop
      SPL  1
      SPL  1
      MOV  ptr+1, >ptr
ptr:  DAT  0, 1

Las dos primeras instrucciones realmente hacen la mayor parte del trabajo: es solo un simple ciclo de copia / salto que copia la celda de instrucciones en blanco (que se inicializa DAT 0, 0) después del final del programa en cada celda posterior (usando el modo de direccionamiento indirecto posterior al incremento) >), hasta que el puntero finalmente se ajusta al comienzo de la memoria y sobrescribe MOVel bucle en sí. Una vez que eso sucede, JMN(JuMp si no es cero) lo detecta y falla.

El problema es que esto todavía deja a la JMNpropia parte sin control. Para deshacernos de él, necesitamos otro MOVpara borrar el JMN... pero eso significa que necesitamos otro MOVpara borrar eso MOV , y así sucesivamente. Para hacer que todo el programa desaparezca sin dejar rastro, tenemos que organizar de alguna manera una sola MOVinstrucción para borrar tanto a sí mismo como al menos otra instrucción.

Ahí es donde SPLentra: es uno de los códigos de operación más extraños en Redcode. Básicamente, es una instrucción de "Rama en ambos sentidos". Verá, en lugar de un simple registro de "contador de programa", como lo haría cualquier CPU normal, la Redcode VM tiene una "cola de proceso": una lista cíclica de punteros a las instrucciones que se ejecutarán. Normalmente, en cada ciclo, un puntero de instrucción se desplaza de la cabecera de la cola, la instrucción se ejecuta y la siguiente instrucción (a menos que haya un salto o una instrucción ilegal) se empuja hacia la cola de la cola. Pero SPLhace que tanto la siguiente instrucción y la instrucción objetivo determinado (que, en el caso de SPL 1, es también la siguiente instrucción) que se insertan en la cola.

El resultado de todo esto es que, después de que se SPL 1hayan ejecutado las dos instrucciones, ahora hay cuatro procesos en la cola, todo sobre la ejecución de la última MOV. Esto es suficiente para borrar JMNtanto el SPLs como el MOVpropio, y también deja la ptrcelda de instrucción como DAT 0, 0indistinguible del núcleo vacío que la rodea.

(Alternativamente, podríamos haber reemplazado la ptrinstrucción con MOV 1, 1, que habría sido convertida MOV 1, 0por las instrucciones anteriores, y así se habría borrado, como lo hizo el primer programa anterior).

PD. Si desea probar estos programas, descargue un simulador Redcode (también conocido como MARS). Recomiendo CoreWin o los venerables pMARS , aunque también hay otros simuladores buenos.

Ilmari Karonen
fuente
¿Esto simplemente no arrojará una infracción de acceso?
Danny Varod
12
Infracción de acceso? ¿Qué clase de cosa extraña es esa? (En serio, Redcode se ejecuta en una máquina virtual bastante abstracta. Todos los direccionamientos son relativos, el espacio de direcciones es contiguo (y cíclico) y cada dirección es válida.)
Ilmari Karonen
¿MOV 1, 0 copia 1 en la dirección 0 o al revés? En todos los idiomas de ensamblador, sé que la dirección 0 es ilegal (dirección NULL).
Danny Varod
44
La sintaxis es la siguiente MOV source, dest. Pero como dije, todas las direcciones en Redcode son relativas, por lo que la dirección en 0realidad significa "la dirección de esta instrucción", mientras que la dirección en 1realidad significa "la dirección de esta instrucción + 1". (Y la dirección absoluta 0 no es de ninguna manera especial en Redcode de todos modos; de hecho, una consecuencia interesante del diseño de "direccionamiento relativo" es que es realmente imposible para un programa Redcode encontrar su propia dirección absoluta en el núcleo. )
Ilmari Karonen
2
Hombre, te estoy muy agradecido. Nunca había escuchado sobre Core War.
seequ
32

do

#include <conio.h>  /* Computer-Operated Nuclear Installation Options */
int main () {
    clrscr();       /* Commence Launch (Remote Systems Console Request) */
    kbhit();        /* Keep Busy until hit */
}

Tenga en cuenta que este no es un código portátil. Funciona con ZOG C en el ART DS9000 . Creo que el uso de armamentos no convencionales califica este código para este desafío. Si le preocupa que la demora que toma ese código para entregar su carga útil no califique de inmediato , contáctenos para recibir asesoramiento sobre ataques preventivos.

effect of launch

En mi máquina doméstica, ni siquiera se compila: no tengo los controladores y bibliotecas correctos. He oído que hay implementaciones populares de C donde este programa compila y ejecuta efectos menos espectaculares, pero nunca he tenido el descaro de probar.

Gilles 'SO- deja de ser malvado'
fuente
2
¡La mejor respuesta, sin duda!
Vector
3
+1. (0) 1; al principio, pensé que @Gilles estaba troleando aquí ... pero luego revisé la página web de ART Inc. ... ¡y fue entonces cuando me di cuenta de lo mucho que me trolearon!
vaxquis
30

JavaScript

window.location.replace("http://pieisgood.org");

Simplemente navega a un sitio web diferente ( delicioso ). :-)

Golfizado (10 caracteres):

location=1
Pomo de la puerta
fuente
77
mmmm, helado: P
Volatilidad
28

DO#

Se suicida matando todos los procesos menos a sí mismo.

foreach (Process p in Process.GetProcesses()) {
    string myexe = Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().CodeBase);
    if (p.ProcessName == myexe) continue;
    p.Kill();
}

Para darle un poco de sabor, podríamos invocar en TerminateProcesslugar de usarProcess.Kill

osvein
fuente
44
+1 para un método muy poco convencional de matar cualquier otra cosa, lo que hace que su propio programa se caiga con el sistema (o al menos, supongo que esa es la idea). No tengo un tiempo de ejecución de C # en esta máquina, pero tengo que preguntar ... En la práctica, ¿esto termina desmantelando el sistema o simplemente todos los procesos en ejecución? (Pensé que los programas de C # invocaban al intérprete, por lo que no confiaban en la existencia de un proceso JIT / CIL particular ...). Nuevamente, es un gran trabajo pensar 'fuera de la caja' (har har) en este :)
Avance el
44
-1 (si tuviera el representante): el meta en el control de código dice que las respuestas destructivas no están permitidas debido al riesgo de que las personas las prueben en sus propias máquinas. Vea la segunda viñeta en la lista de restricciones: codegolf.stackexchange.com/tags/code-trolling/info
Kevin - Restablece a Mónica el
Los procesos del sistema no se pueden eliminar sin derechos de administrador, ¿verdad?
Sarge Borsch
3
@Kevin code-challenge y code-trolling son etiquetas diferentes con reglas diferentes.
osvein
3
@ user1981338: la pregunta originalmente tenía la etiqueta de arrastre de código, pero desde entonces se ha editado. Ahora que la etiqueta se ha ido, +1.
Kevin - Restablece a Mónica el
21

BASH - 12 caracteres

:(){ :|:&};:

Bifurcación clásica. Bloquea la computadora y obliga al usuario (o administrador) a reiniciarse.

Tyzoid
fuente
55
Aburrido, pero sigue siendo mi favorito personal. Lo uso para cerrar sistemas en vivo
s3lph
3
Se inicia tantas veces como puede, eso no se detiene.
marinus
1
Pero comenzará tantos procesos como sea posible hasta que la computadora falle y, por lo tanto
cierre
14
+1 para agregar emoticonos como :()y:|
ProgramFOX
1
@Kartik: Sin el primer espacio, obtendrá un error de sintaxis. Puedes eliminar el segundo.
Dennis
20

Python (en computadoras portátiles viejas)

En computadoras portátiles antiguas con procesadores de un solo núcleo y mal enfriamiento:

while True:
    print("CPU Temperature rising")

Cuando la computadora portátil explota (o simplemente se apaga) después de unas horas, el programa no se ejecutará.

(Para mejores resultados, envuelva la computadora portátil en una manta o algo así)

MadTux
fuente
18

Rubí

kills el proceso de ejecución de ruby ​​/ irb en * nix.

`kill #{$$}`
daniero
fuente
2
Me gusta la elegancia de este. +1
Pomo de la puerta
18

Apple 2 Basic

1 PRINT "HELLO"
2 POKE 2053,128
3 POKE 2054,58
4 GOTO 1

Sobrescribe una de sus instrucciones con un END.

marinus
fuente
¿Cómo funciona este?
Johannes
55
@Johannes: en Applesoft BASIC, el programa se almacena en forma de token en la memoria. Debido a que no hay sistema operativo o protección de memoria, siempre se almacena en el mismo lugar y no hay nada que le impida escribir en esa memoria. Entonces, el primero POKEescribe un ENDtoken sobre el PRINTtoken, y luego el segundo POKEescribe un terminador de comando sobre el primero ". Cuando GOTOse ejecuta, termina ejecutándose en ENDlugar de PRINTy el programa finaliza.
marinus
14

En el ensamblaje, algo como esto probablemente funcionaría:

jmp 0

Recuerdo que compila esto realmente funcionó DOS. En aquel entonces, reiniciaba la computadora.

Martijn Courteaux
fuente
intente ret; En realidad, voy a publicar esto como respuesta: P
Julien Lebot
retf funcionará, ya que puse en una respuesta :) Se mata a causa de las obras de segmentación de memoria manera (o no funciona, debería decir) en los sistemas operativos modernos
chbaker0
»Jmp 0« funciona con DOS, porque los dos primeros bytes de un segmento de código eran CD 20, o 'INT 20', que es el código para salir del programa. »Empuje 0; ret «tendría el mismo efecto.
Daniel
13

PHP

function quit(){unlink(__FILE__);posix_kill(getmypid(),15);}

Efectos:
elimina su archivo de script de mierda y luego mata su programa.
Lanza a uno de estos chicos malos a una base de código para confundir a la gente.

donutdan4114
fuente
Esta no es una sintaxis PHP válida. Intenta definir una función quitpero la lista de parámetros es un código para ejecutar. Recibo un error de análisis al intentar ejecutarlo.
Emil Vikström
@ EmilVikström - Corregido ahora.
donutdan4114
12

C, 9 caracteres

Compila con gccy otros compiladores a los que no les importan los pequeños detalles como mainno ser una función.
Funciona en x86plataformas: el programa se cierra inmediatamente.

main=195;

195 es el código de operación de la retinstrucción.

Ugoren
fuente
44
Segfaults para mí. mainse encuentra en .dataporque es un int, no en .text, y .datase carga en una página no ejecutable.
mniip
10

Siempre quise publicar esto en algún lugar, supongo que encaja aquí a pesar de que ya hay una respuesta aceptada.

int
main(int argc, char **argv)
{
        revoke(*argv);
}

Esto funciona en cualquier sistema posterior a 4.3BSD y en otros que se implementen revokede la misma manera. Linux no tiene un prototipo, MacOS lo hizo en el pasado, pero solo devuelve errores en las versiones recientes.

revoketoma una ruta a un archivo y destruye por la fuerza todas las referencias a ese archivo. Esto incluye las asignaciones de memoria de ese archivo, incluso el propio ejecutable. Obviamente, debe iniciar el programa con una ruta hacia él, esto no funcionará si está en RUTA.

Una variación de esto que debería funcionar en la mayoría de los sistemas tipo Unix es:

#include <sys/mman.h>
#include <inttypes.h>
#include <unistd.h>

int
main(int argc, char **argv)
{
        intptr_t ps = getpagesize();
        munmap((void *)(((intptr_t)main)&~(ps - 1)), ps);
}

Simplemente anulamos la asignación de la página que se asigna mainpara que cuando la llamada munmapregrese, no tenga a dónde regresar. Hay una pequeña posibilidad de que la función llame amunmap esté solo en el límite de una página y el retorno sea exitoso, por lo que para estar perfectamente seguros de que esto funciona, probablemente tengamos que intentar desasignar dos páginas primero.

Y, por supuesto, una variación sobre el mismo tema:

#include <sys/mman.h>
#include <inttypes.h>
#include <unistd.h>

int
main(int argc, char **argv)
{
        intptr_t ps = getpagesize();
        munmap((void *)(((intptr_t)&ps)&~(ps - 1)), ps);
}

Simplemente desasigne la pila para que no tengamos ningún lugar al que volver. La misma advertencia que anular la asignaciónmain : es posible que necesitemos desasignar dos páginas, excepto que tenemos que recordar que la pila probablemente disminuya (a menos que esté en PA-RISC o alguna otra arquitectura extraña como esa).

Otra forma de tirar de la alfombra debajo de tus propios pies:

#include <sys/resource.h>

int
main(int argc, char **argv)
{
        setrlimit(RLIMIT_CPU, &((struct rlimit){ 0 }));
        while(1);
}

Depende del sistema operativo cómo el sistema maneja un límite de CPU de 0 segundos y con qué frecuencia se realiza la contabilización del tiempo de CPU. MacOS mata el proceso de inmediato, Linux requiere el ciclo while, otro sistema que probé no hizo nada incluso con un límite de un segundo y un ciclo while, no depuré más.

Art
fuente
9

sh

sudo kill -SEGV 1

Pánico interno instantáneo en Linux. Destina todos los procesos, incluido él mismo

Cmd

pskill csrss.exe

Pantalla azul instantánea en Windows. Termina el Client/Server Runtime SubSystem. Pskill debe estar instalado.

MultiplyByZer0
fuente
¿ killall initTambién funcionaría?
s3lph
1
@the_Seppi 1. Solo un usuario de nivel raíz puede enviar señales a init 2. Init solo provocará un pánico interno si recibe la señal 11 (fallo de segmentación)
MultiplyByZer0
OK gracias ... ¿Sabe lo que ocurre si se utilizasudo killall init
s3lph
1
@the_Seppi Sí, lo he intentado antes. Init lo ignora, porque init puede decidir si recibe la señal o no, por lo que ignora por completo SIGKILL. unix.stackexchange.com/questions/7441/…
MultiplyByZer0
8

En C (Compatible con Windows / Linux / (probablemente Unix / Freed BSD también)):

main;

Ejemplo de uso:

En Windows compila con:

echo main; > main.c && cl /Fe:main.exe main.c

Y Linux:

echo "main;" > main.c && gcc -w -o main main.c

Asumiendo que el compilador está instalado y en la variable PATH actual.

EDITAR: Técnicamente, arroja una excepción (generada por el procesador) en Linux, pero no hay tal mensaje en Windows. Entonces esta entrada probablemente no es válida; Sin embargo, creo que es genial: P

EDITAR: en ensamblador x86 (usando NAsm / YAsm)

global s
s:
    ret

Compilar con:

(Windows)

nasm -f win32 -o test.obj test.asm
LINK /OUT:test.exe /SUBSYSTEM:CONSOLE /ENTRY:s test.obj

(Linux)

nasm -f elf32 -o test.obj test.asm
ld -o test -e s test.obj

Desafortunadamente, esta forma también produce un volcado de núcleo en Linux, por lo que creo que es funcionalmente equivalente al método C; excepto más eficiente.

Julien Lebot
fuente
1
¡Guauu! Acabo de compilar esto -Wall -Wextra -std=c99 -pedanticy no hay advertencias en absoluto.
ldrumm
En realidad quería poner esto, pero decidí no hacerlo, porque sería un duplicado de mi solución a un problema diferente ( codegolf.stackexchange.com/a/8778/3103 ).
Konrad Borowski
7

Tomando las cosas literalmente de una manera tonta con Haskell:

import System.Exit

absolutely doThis = if True then doThis else undefined

unconventional doThat = do
  putStrLn "I could just do that"
  putStrLn "But I'm gonna print factorial of 100 first"
  putStrLn "There you go:"
  print $ fac 100
  doThat
  where fac n = foldl (*) 1 [1..n]

main = absolutely unconventional exitFailure
silbido
fuente
6

Pitón


Usando el multiprocessingmódulo , podemos generar otro hilo cuyo trabajo es comunicar con el proceso original a través de una cola, diciéndole cuándo salir:

import multiprocessing
import time
queue = multiprocessing.Queue()

def second_thread():
    while True:
        queue.put('quit')
        time.sleep(0.1)

second_ps = multiprocessing.Process(target = second_thread)
second_ps.start()

while True:
    msg = queue.get()
    if msg == 'quit':
        break
    time.sleep(0.1)

second_ps.join()
Penetración
fuente
6

ANSI C

Sin optimización de código, el siguiente programa se cierra tan rápido: en realidad no se puede iniciar a pesar de que se compila en un programa válido

#include<stdlib.h>
#include<stdio.h>

char tooLong[0x7CFFFFFF];

void main()
{
    printf("never executed.");
}

esto puede depender del sistema; comente si puede iniciarlo.

Johannes
fuente
"¡Renunciar lanzando excepciones ya no será aceptado!" y esto incluye errores de
falta de
2
@ JanDvorak Hay diferencias entre errores y excepciones .
syb0rg
Sin embargo, creo que la regla abarca ambos. ¿Puede aclarar el autor de la pregunta? Y no, no creo que una pregunta SO específica de Java sea una buena referencia, especialmente cuando defiende una solución C.
John Dvorak
9
El programa no arroja un error ni causa un error dentro del programa. El sistema no puede manejarlo.
Johannes
6

Bueno. Si simplemente System.exitno se permite llamar en Java, ¿qué hay de llamarlo mediante reflexión desde otro hilo?

import java.lang.reflect.*;

public class Quit {
    public static void main(String[] args) throws Exception {
        final Method exit = System.class.getMethod("exit", new Class<?>[]{ int.class });
        new Thread(new Runnable() {
            @Override public void run() {
                try {
                    System.out.println("calling... " + exit);
                    exit.invoke(null, new Object[] { 0 });
                } catch (Exception e) { e.printStackTrace(); }
            }
        }).start();
        for (int i = 1; ; ++i) {
            System.out.println("counting... " + i);
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) { break; }
        }
    }
}

Busca el método de salida, genera un nuevo hilo y realiza una cuenta regresiva hasta que ese hilo mata el proceso al llamar a la salida a través de la reflexión.

David Conrad
fuente
Cuenta atrás? Parece que cuenta conmigo.
Justin
1
Er, sí, buen punto. Debería haber dicho conteos, o simplemente decir que cuenta hasta que salga.
David Conrad
6

lenguaje de máquina x86, 1 carácter

Por lo general, puede hacer un ejecutable viable con una instrucción RET

\xC3 
usuario155406
fuente
44
¿Cómo es eso poco convencional?
aditsu
6

C (Linux)

Versión suicida

Envía un SIGKILL a sí mismo.

#include <stdio.h>
#include <signal.h>
#include <unistd.h>

int main() 
{
    kill(getpid(),SIGKILL);

    printf("Not killed");
}

Versión "Tu quoque mi fili"

Forks, entonces el hijo mata al padre.

#include <stdio.h>
#include <signal.h>
#include <unistd.h>

int main() 
{
    if (!fork())
        kill(getppid(), SIGKILL);

    printf("Not killed");
}
cpri
fuente
5

Perl

...

Eso es todo.


Explicación: Lanza la excepción Unimplementedy sale inmediatamente.

PhiNotPi
fuente
Explicación agregada.
PhiNotPi
3
No sé, las excepciones son aburridas.
66
Inválido debido a la adaptación del desafío: sin excepciones
s3lph
Simplemente no he llegado a escribir otra respuesta todavía.
PhiNotPi
5

Lote y depuración

Un viejo pero bueno, funciona en máquinas DOS para un reinicio instantáneo del sistema. Bonificación en que es un guión destinado a ser interpretado por dos intérpretes diferentes e incompatibles.

reset.bat

goto start

rcs
ffff
rip
0000
g
:start
debug < reset.bat

La interpretación del archivo por lotes omite las instrucciones destinadas a la depuración y se alimenta para depurar para la interpretación. La línea en blanco después gotoes necesaria para borrar el error en los debugresultados debido a que se alimenta un comando desconocido, que es el goto.

Alboroto
fuente
1
Solía ​​hacer lo mismo que dec axe; hacha de empuje; empujar bx; retf
moopet
3

Java

El siguiente código no se ha probado y solo funcionará en algunas plataformas.

public class Quitter
{
       public static void main ( String [ ] args )
       {
             Process process = Runtime . getRuntime ( ) . exec ( "reboot" ) ;
       }
}
emory
fuente
45
¿Qué pasa con los espacios en blanco que horrendo
Pomo
77
En UNIX tendría que ser sudo reboot, en Windowsshutdown /r /t 0
s3lph
2
En UNIX solo tiene que ejecutar ese programa con sudo, no el comando que desea ejecutar.
Johannes Kuhn
1
@ the_Seppi, @ JohannesKuhn, como dije, solo funciona en algunas plataformas y suponía que ibas a invocarlo así sudo java Quitter.
emory
3
-1 NO ES SUFICIENTE WHITESPACE !!!
vaxquis
3

Potencia Shell

get-process | stop-process -force

Guarde esto como 'lastresort.ps1' y debería funcionar.

Si tiene problemas con el script que no se ejecuta debido a alguna política tonta, escriba esto antes de ejecutar el script:

Set-ExecutionPolicy Unrestricted
afreak
fuente
Funciona bien desde la línea de comandos sin guardar como script también.
Iszi
3

TI-Basic 84

:;;::;banana\\sEnd\;:;1:If X=X-1 :eat banana juice and lol;;;::::;:thought you could EAT THINGS XD /// CRAZIEST ANSWER YET!!!
Timtech
fuente
3

Python (una alternativa de una línea al OP)

Pensé que en realidad no había una mejor respuesta de Python que la que sugería el OP, pero no me gustó cómo eran tantas líneas, así que así es como se hace exactamente como lo hizo el OP, pero en una línea:

exec(''.join([ chr(x) for x in [35, 33, 47, 117, 115, 114, 47, 98, 105, 110, 47, 101, 110, 118, 32, 112, 121, 116, 104, 111, 110, 10, 35, 32, 117, 110, 105, 120, 32, 111, 110, 108, 121, 44, 32, 109, 105, 103, 104, 116, 32, 119, 111, 114, 107, 32, 111, 110, 32, 119, 105, 110, 100, 111, 119, 115, 10, 35, 32, 110, 111, 116, 101, 58, 32, 107, 105, 108, 108, 115, 32, 65, 76, 76, 32, 82, 85, 78, 78, 73, 78, 71, 32, 112, 121, 116, 104, 111, 110, 32, 112, 114, 111, 99, 101, 115, 115, 101, 115, 46, 32, 66, 101, 32, 99, 97, 114, 101, 102, 117, 108, 32, 47, 33, 92, 10, 100, 101, 102, 32, 101, 120, 105, 116, 40, 41, 58, 10, 32, 32, 32, 32, 105, 109, 112, 111, 114, 116, 32, 111, 115, 10, 32, 32, 32, 32, 111, 115, 46, 115, 121, 115, 116, 101, 109, 40, 34, 107, 105, 108, 108, 97, 108, 108, 32, 112, 121, 116, 104, 111, 110, 51, 34, 41, 10, 32, 32, 32, 32, 35, 32, 87, 105, 110, 100, 111, 119, 115, 32, 97, 100, 100, 111, 110, 10, 32, 32, 32, 32, 111, 115, 46, 115, 121, 115, 116, 101, 109, 40, 34, 116, 97, 115, 107, 107, 105, 108, 108, 32, 47, 105, 109, 32, 112, 121, 116, 104, 111, 110, 46, 101, 120, 101, 32, 47, 102, 34, 41, 32, 35, 32, 111, 114, 32, 119, 104, 97, 116, 101, 118, 101, 114, 32, 102, 105, 108, 101, 110, 97, 109, 101, 32, 112, 121, 116, 104, 111, 110, 64, 119, 105, 110, 100, 111, 119, 115, 32, 104, 97, 115, 10, 101, 120, 105, 116, 40, 41, 10] ]))

Puede hacer que esto sea una función y hará el trabajo por usted.

afreak
fuente
3

Mi propia idea, no participar

TIGCC (para Texas Instrumens TI-89, TI-89 Titanium, TI-92 +, TI-V200)

void main(void) {
    unlink("quit");
    asm("trap #2");
}

TI-Basic para las mismas calculadoras

quit()
:© lines starting with © are comments
:Prgm
:©DelVar quit
:Exec "4E424E750000"
:EndPrgm

Lo que hace el programa: Primero se elimina de la RAM. (No lo coloque en la ROM o no funcionará ...) Todavía puede ejecutarse porque durante la ejecución se crea y ejecuta una copia del programa. asm(trap #2);invoca el comando ASM4E424E750000 , que es el comando para restablecer la calculadora, eliminar su RAM (la ROM Flash permanece intacta) y reinstala todas las aplicaciones.

EDITAR: Acabo de probar la versión básica. No se puede eliminar a sí mismo ...

s3lph
fuente
3

Formato .com de MS-DOS

Escribe instrucciones no válidas (FFFF) en la memoria y luego las ejecuta, haciendo que NTVDM se bloquee.

Hexadecimal

B8 FF FF A3 06 01

Lenguaje ensamblador Debug.exe

MOV AX, FFFF
MOV [0106],AX
craftext
fuente