Mücadelesi: Kendisini terk eden bir kod parçası yaz [kapalı]


39

Kesinlikle alışılmadık bir şekilde - hemen çıkan bir kod parçasını araştırıyorum (ben miyim?).

Bu demek değildir: System.exit((int) 'A');(Java).

Bu demek olabilir:

#!/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()

En çok oy alan cevap kazandı! Tüm diller, tüm mimariler.

Düzenleme: İstisnalar atarak çıkmak, artık kabul edilmeyecektir!


3
Ama idamın sona ermesi alışılmadık bir durum değil ... Şey, bu bir alternatiftir exit(), ancak yine de uygulanmış bir özellik ...
s3lph

13
Bu kod trolling değil - bundan tuhaf cevaplar istediğimizi biliyoruz.
Liam Dawson

6
Sistemi kapatmak işe yarıyor mu?
Hosch250

8
Bir keresinde, yanlışlıkla bir ağ kartının işletim sistemi üzerinden DMA'ya neden olmasına neden oldum. Olduğunda, anında BIOS'a geri döndün, yeniden başlatıyordun.
Ben Jackson,

3
Ben gibi hissediyorum Shannon bize burada yendi vardır;)
parlak yıldızı

Yanıtlar:


44

bash, 6 karakter

exec [

execmevcut süreci başka bir şeyle değiştirir. [zararsız bulabileceğim en kısa komut (bu bir takma addır test)


Başka bir istisna mı?
Johannes Kuhn

Hayır, sadece exec'ing [komutu :)
Dennis Kaarsemaker

1
neden çalışıyor ne yapar?
s3lph

@ the_Seppi, şu anki işlemi [(aka test) ile değiştirir
Timtech

~ $ echo $PATH/?-> /bin/X /bin/[ /bin/w. Balık kabuğu bana iki komut daha verdi. wbence ilginç.
Konrad Borowski

46

darbe

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

Programı, kullanıcının tepki gösterebileceği en hızlı şekilde sonlandırır ;-)


10
Upvoting çünkü beni güldürdü.
Michael Stern,

5
Linux'ta çalıştırmayın.
kenorb

1
dd: / dev / hda: bulunamadı
Joshua

39

Redcode

(Arkaplan: Redcode, 1984 yılında AK Dewdney tarafından tanıtılan Core War programlama oyununda kullanılan sözde bir montaj dilidir . Genelde, kendi kendini değiştiren kodun yoğun şekilde kullanılmasını sağlar. Redcode programlama hakkında birkaç yıl önce güzel bir küçük yazı yazdım . )

MOV 1, 0

Bu tek-talimatlı program yalnızca kendisini öldürmekle kalmaz, aynı zamanda kendi program kodunu da bellekten siler ve bellekte hiçbir iz bırakmaz.

Sıkıcı mı dedin? Sonuçta, yukarıdaki program yine de kodunu yazmamış olsa bile ölmüş olacaktı. Tamam, işte sonunda kendini silmeden ve ölmeden önce tüm çekirdeği temizleyen bir tane:

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

İlk iki komut aslında işin çoğunu yapar: DAT 0, 0programın bitiminden sonra boş talimat hücresini (başlangıç ​​durumuna getirilen ) sonraki her hücreye kopyalayan basit bir kopyalama / atlama döngüsü (artış sonrası dolaylı adresleme modunu kullanarak) >), imleç nihayet hafızanın başlangıcına kadar sarar MOVve döngünün içinde üzerine yazar . Bu olduğunda, JMN(Sıfır değilse JuMp) onu algılar ve düşer.

Sorun şu ki, bu hala JMNkendini boşa harcıyor. Ondan kurtulmak için, onu MOVsilmek için başka birine ihtiyacımız var JMN... ama bu, onu MOVsilmek için başka birine ihtiyacımız varMOV , vb. Tüm programı iz bırakmadan ortadan kaldırmak için, bir şekilde hem kendini hem de en az bir diğer talimatı MOVsilmek için tek bir talimat düzenlemek zorundayız .

Buraya SPLgelir - Redcode'daki en garip kodlardan biri. Temel olarak, bir "Her İki Yönde Şube" talimatıdır. Gördüğünüz gibi, herhangi bir normal CPU gibi basit bir "program sayacı" kaydı yerine, Redcode VM'nin bir "işlem kuyruğu" vardır: yürütülecek talimatların çevrimsel bir işaretçi listesi. Normalde, her döngüde, bir komut göstericisi kuyruğun başından kaydırılır, komut yürütülür ve bir sonraki komut (atlama veya kural dışı bir komut olmadıkça) kuyruğun kuyruğuna basılır. Ama SPLneden hem sonraki talimat ve (söz konusu olduğunda, belirli bir hedef talimat SPL 1olduğunu da sonraki talimat) kuyruğuna üzerine itilmeye.

Tüm bunların sonuçları, iki SPL 1talimatın yerine getirilmesinden sonra, sıradaki dört işlemin tamamının en son çalıştırma işlemiyle ilgili olmasıdır MOV. Bu JMNhem kendisini hem SPLde MOVkendisini silmek için yeterlidir ve aynı zamanda ptrtalimat hücresini DAT 0, 0çevreleyen boş çekirdekten ayırt edilemez olarak bırakır .

(Alternatif olarak, ptrtalimatı daha önceki talimatlarla MOV 1, 1dönüştürülmüş olacak şekilde değiştirdik MOV 1, 0ve tıpkı yukarıdaki ilk programda olduğu gibi kendini silebilirdik.)

Ps. Bu programı test etmek istiyorsanız, bir Redcode simülatörü (MARS) indirin. Ben de birkaç iyi simülatör olmasına rağmen CoreWin veya saygıdeğer pMARS'ı tavsiye ederim .


Bu sadece erişim ihlali atmaz mı?
Danny Varod,

12
Erişim ihlali? Bu ne biçim garip bir şey? (Cidden, Redcode oldukça soyut bir VM'de çalışıyor. Tüm adresleme göreceli, adres alanı bitişik (ve döngüsel) ve her adres geçerli.)
Ilmari Karonen

MOV 1, 0 1'i adres 0'a mı yoksa başka bir yere mi kopyalar? Tüm assembler dillerinde 0 adresinin yasal olmadığını biliyorum (NULL adres).
Danny Varod,

4
Sözdizimi MOV source, dest. Fakat dediğim gibi, Redcode'daki tüm adresleme görecelidir, bu nedenle adres 0aslında "bu talimatın adresi 1" anlamına gelirken, adres aslında "bu komutun adresi + 1" anlamına gelir. (Ve mutlak adres 0, Redcode'da hiçbir şekilde özel değildir, aslında, "tüm göreceli adresleme" tasarımının ilginç bir sonucu, Redcode programının özünde kendi mutlak adresini bulması aslında imkansızdır ! )
Ilmari Karonen

2
Dostum, sana minnettarım. Çekirdek Savaşı hakkında hiç bir şey duymamıştım.
seequ

32

C

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

Bunun taşınabilir kod olmadığını unutmayın. ART DS9000'de ZOG C ile çalışır . Geleneksel olmayan silahlanmaların kullanılmasının bu zorunluluk için bu kodu taşıdığına inanıyorum . Bu kod parçasının yükünü getirmesinin gecikmesinin derhal geçerli olmadığından endişe duyuyorsanız , önleyici grevler konusunda tavsiye almak için bizimle iletişime geçin.

lansmanın etkisi

Ev makinemde bile derleme yok - doğru sürücü ve kütüphanelerim yok. Bu programın daha az muhteşem etki yarattığı ve çalıştığı popüler C uygulamaları olduğunu duymuştum ama denemek için hiçbir zaman sinirim olmadı.


2
En iyi cevap, eller aşağı!
Vektör

3
+1 (0) 1; İlk başta, @Gilles'in burada gezindiğini sanıyordum ... ama sonra ART Inc. web sayfasını kontrol ettim ... ve daha sonra ne kadar ağır olduğumu anladım!
vaxquis

30

JavaScript

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

Basitçe farklı ( lezzetli ) bir web sitesine gider . :-)

Golf (10 karakter):

location=1

7
mmmm, dondurma: P
Oynaklık

28

C #

Her süreci kendisi öldürerek kendisini öldürür.

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

Biraz baharatlamak için TerminateProcesskullanmak yerine PInvoke yapabiliriz .Process.Kill


4
Sıra dışı her şeyi öldürmek için alışılmadık bir yöntem olan +1. Bu makinede bir C # çalışma zamanım yok, ama sormam gerek ... Pratikte, bu işlem sistemi çökertmek mi yoksa sadece çalışan tüm işlemleri mi gerektiriyor? (C # programlarının tercümanı kendileri çağırdığını, böylece belirli bir JIT / CIL sürecinin varlığına dayanmadığını sanıyordum ...). Yine, bu konuda 'kutunun dışında' (har har) düşünerek büyük iş :)
Atılım

4
-1 (Temsilcime sahipsem): Kod trolling üzerine meta, insanların kendi makinelerinde deneme riski nedeniyle tahrip edici cevaplara izin verilmediğini söylüyor. Kısıtlamalar listesindeki ikinci mermiye bakın: codegolf.stackexchange.com/tags/code-trolling/info
Kevin -

Sistem süreçleri yönetici hakları olmadan öldürülemez, değil mi?
Sarge Borsch

3
@Kevin kod mücadelesi ve kod trolling , farklı kurallara sahip farklı etiketlerdir.
osvein

3
@ user1981338: soru başlangıçta kod trolling etiketine sahipti, ancak bu yana düzenlenmiştir. Şimdi etiket gitti, +1.
Kevin - Monica

21

BASH - 12 karakter

:(){ :|:&};:

Klasik çatallı bomba. Bilgisayarı kilitler ve kullanıcıyı (veya yönetici) yeniden başlatmaya zorlar.


5
Sıkıcı - ama yine de kişisel favorim. Bunu canlı sistemleri kapatmak için kullanıyorum
s3lph 29:13

3
Mümkün olduğu kadar çok defa kendi kendine başlar, bu bırakma değildir.
marinus

1
Ancak bilgisayar
çökene

14
Gibi suratlar eklemek için +1 :()ve:|
ProgramFOX

1
@Kartik: İlk boşluk olmadan, sözdizimi hatası alırsınız. İkincisini ortadan kaldırabilirsiniz.
Dennis,

20

Python (eski dizüstü bilgisayarlarda)

Tek çekirdekli işlemcili ve kötü soğutmalı eski dizüstü bilgisayarlarda:

while True:
    print("CPU Temperature rising")

Dizüstü birkaç saat sonra patlar (veya kapanır), program çalışmayacaktır.

(En iyi sonucu elde etmek için, dizüstü bilgisayarı battaniyeye sarın veya)



18

Apple 2 Temel

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

Bir ile talimatlarından birinin üzerine yazar END.


Bu nasıl çalışıyor?
Johannes

5
@Johannes: Applesoft BASIC'te, program hafızaya alınmış bir formda saklanır. İşletim sistemi veya bellek koruması olmadığından, her zaman aynı yerde saklanır ve sizi bu belleğe yazmanızı engelleyecek hiçbir şey yoktur. Böylece, ilk belirteç üzerine POKEbir ENDbelirteç yazar PRINTve daha sonra ikincisi POKEbirinciye bir komut sonlandırıcı yazar ". Ne zaman GOTOyürütüldüğünde, bu çalışan biter ENDyerine PRINTve program biter.
marinus

14

Montajda, böyle bir şey muhtemelen işe yarayacak:

jmp 0

Bunun aslında DOS çalıştığını derlediğini hatırlıyorum. O zaman, bilgisayarı yeniden başlattı.


ret deneyin; Aslında bunu bir cevap olarak göndereceğim: P
Julien Lebot

retf işe yarayacak, bunu zaten bir cevaba koydum :) Modern işletim sistemlerinde bellek bölümleme çalışmalarının (ya da söylemem gerekir) demesi nedeniyle onu öldürüyor
chbaker0

»Jmp 0«, DOS ile çalışır, çünkü kod bölümünün ilk iki baytı CD 20 ya da çıkış program kodunun kodu olan 'INT 20' idi. »0'a basın; ret «aynı etkiye sahip olacaktı.
Daniel

13

PHP

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

Etkileri:
Crappy script dosyanızı siler ve ardından programınızı öldürür.
İnsanları şaşırtmak için bu kötü çocuklardan birini bazı kod tabanlarına atın.


Bu geçerli bir PHP sözdizimi değil. Bir işlev tanımlamaya çalışıyorsunuz quitancak parametre listesi çalıştırılacak kod. Çalıştırmaya çalışırken ayrıştırma hatası alıyorum.
Emil Vikström

@ EmilVikström - Şimdi düzeltildi.
donutdan4114

12

C, 9 karakter

İşlevsiz olmak gccgibi küçük ayrıntılarla ilgilenmeyen derleyiciler ve diğer derleyiciler main. Platformlarda
çalışır x86- program hemen çıkar.

main=195;

195, rettalimatın kodu .


4
Benim için Segfaults. mainiçinde .datadeğil bir int olduğu .textve .dataçalıştırılamayan bir sayfaya yüklendiği için bulunur.
Ocak'ta

10

Bunu her zaman bir yere göndermek istemişimdir, sanırım zaten kabul edilmiş bir cevap olsa bile, buraya uyuyor.

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

Bu, herhangi bir 4.3BSD sonrası sistemde ve revokeaynı şekilde uygulanan diğerlerinde çalışır . Linux, prototip olmasına rağmen, geçmişte yaptı, ancak yalnızca son sürümlerinde hatalar döndürdü.

revokebir dosyaya giden yolu kullanır ve zorla o dosyaya yapılan tüm referansları imha eder. Bu, o dosyanın herhangi bir bellek eşlemesini, hatta yürütülebilir dosyanın kendisini içerir. Açıkçası, programı ona bir yolla başlatmanız gerekiyor, eğer PATH'ta olsaydı bu işe yaramaz.

Unix benzeri sistemlerin çoğunda çalışması gereken bir varyasyon:

#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);
}

Biz sadece arama sayfasını eşleştiriyoruz, mainböylece çağrı munmapgeri döndüğünde, geri dönecek bir yeri kalmayacak. İşlev çağrısının munmapyalnızca bir sayfa sınırında olması ve geri dönüşün başarılı olması için küçük bir olasılık var, bu nedenle bu işlemin tam olarak çalıştığından emin olmak için, muhtemelen önce iki sayfayı eşleştirmeyi denemeliyiz.

Ve elbette, aynı temada bir varyasyon:

#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);
}

Yığını eşleştir, böylece geri dönecek bir yerimiz kalmaz. Eşleştirmeyle aynı uyarı main- iki sayfanın eşlemesini kaldırmamız gerekebilir, ancak yığının muhtemelen büyüdüğünü hatırlamamız gerekebilir (PA-RISC veya bunun gibi başka garip bir mimaride değilseniz).

Halıyı kendi ayaklarınızın altından çekmenin başka bir yolu:

#include <sys/resource.h>

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

İşletim sisteminin, sistemin 0 saniyelik bir cpu sınırını nasıl idare ettiğine ve cpu zamanının ne kadar sıklıkla yapıldığına bağlı olarak bağlıdır. MacOS süreci hemen öldürüyor, Linux süre döngüsüne ihtiyaç duyuyor, denedim başka bir sistem bir saniye limitiyle bile bir şey yapmadı ve süre döngü yaparken daha fazla hata ayıklamadım.


9

sh

sudo kill -SEGV 1

Linux'ta anlık çekirdek paniği. Kendisi de dahil olmak üzere tüm işlemleri çözer

Cmd

pskill csrss.exe

Windows'da anlık mavi ekran. Sonlandırır Client/Server Runtime SubSystem. Pskill yüklü olmalı.


Misiniz killall initda işe?
s3lph

1
@the_Seppi 1. Yalnızca bir kök düzeyinde kullanıcı bu sinyal 11 (segamentation hatası) alırsa sadece kernal paniğe neden olacaktır 2. Init init sinyal gönderebilir
MultiplyByZer0

Tamam teşekkür ederim ... Eğer kullanırsan ne olacağını biliyor musunsudo killall init
s3lph

1
@ the_Seppi Evet, daha önce denedim. Init bunu görmezden gelir, çünkü init sinyali alıp almayacağına karar verebilir, bu yüzden SIGKILL'i tamamen göz ardı eder. unix.stackexchange.com/questions/7441/…
MultiplyByZer0

8

C (Uyumlu Windows / Linux / (muhtemelen Unix / Serbest BSD de)):

main;

Kullanım örneği:

Windows altında:

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

Ve Linux:

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

Derleyicinin kurulu olduğunu ve mevcut PATH değişkeninde olduğunu varsayalım.

EDIT: Teknik olarak Linux'ta (işlemci tarafından dile getirilen) bir istisna atıyor, ancak Windows'ta böyle bir mesaj yok. Yani bu giriş muhtemelen geçerli değil; ancak bence harika: P

EDIT: x86 birleştiricisinde (NAsm / YAsm kullanarak)

global s
s:
    ret

İle derleyin:

(Pencereler)

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

Ne yazık ki bu yol aynı zamanda linux üzerine bir çekirdek dökümü de üretiyor, bu yüzden işlevsel olarak C yöntemine eşdeğer olduğuna inanıyorum; daha verimli hariç.


1
Vaov! Sadece bunu derledim -Wall -Wextra -std=c99 -pedanticve hiçbir uyarı yok.
ldrumm

Aslında bunu koymak istedim, ancak buna karşı karar verdim, çünkü çözümümün farklı bir soruna kopyalanması gerekecekti ( codegolf.stackexchange.com/a/8778/3103 ).
Konrad Borowski

7

Haskell ile işleri kelimenin tam anlamıyla aptalca bir şekilde almak:

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

6

piton


Modülü kullanarak ,multiprocessing işi orijinal işlemle bir kuyruktan iletişim kuracak olan başka bir iş parçacığı ortaya çıkarabilir ve ne zaman çıkacağını söyleyebiliriz:

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()

6

ANSI C

Kod optimizasyonu olmadığında, aşağıdaki program çok hızlı bir şekilde sonlandırılıyor - geçerli bir programa derlese bile başlatılamaz

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

char tooLong[0x7CFFFFFF];

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

bu sisteme bağlı olabilir - eğer başlatabilirseniz yorum yapın.


"İstisnalar atarak istifa etmek artık kabul edilmeyecek!" ve bu bellek
yetersiz

2
@JanDvorak Hatalar ve istisnalar arasında farklılıklar var .
syb0rg,

Ancak kuralın ikisini de içerdiğine inanıyorum. Soru sorabilir mi? Ve hayır, Java'ya özgü bir SO sorununun, özellikle bir C çözümünü savunurken iyi bir referans olduğunu düşünmüyorum.
John Dvorak

9
Program ne hata atıyor ne de programda bir hataya neden oluyor. Sistem bunun üstesinden gelemez.
Johannes

6

Tamam. System.exitJava'da basitçe arama yapılmasına izin verilmezse, başka bir diziden yansımayla çağırmaya ne dersiniz?

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; }
        }
    }
}

Çıkış yönteminin yukarı görünüyor, çoluk yeni bir iplik ve sayar aşağı o iplik yansıma yoluyla çıkış arayarak süreci öldürene kadar.


Geri sayım mı? Bana sayılır gibi görünüyor.
Justin,

1
Evet, iyi nokta. Ben saymalı ya da çıkana kadar saydığını söylemeliydim.
David Conrad

6

x86 makine dili, 1 karakter

Genellikle bir RET talimatından çalıştırılabilir bir çalıştırılabilir hale getirebilirsiniz

\xC3 

4
Bu nasıl alışılmadık ?!
aditsu

6

C (Linux)

İntihar sürümü

Kendisine bir SIGKILL gönderir.

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

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

    printf("Not killed");
}

"Tu quoque mi fili" versiyonu

Forks, sonra oğul babasını öldürür.

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

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

    printf("Not killed");
}

5

Perl

...

Hepsi bu.


Açıklama: Bir istisna atar Unimplementedve hemen çıkar.


Açıklama eklendi.
PhiNotPi

3
Bilmiyorum, istisnalar sıkıcı.

6
Mücadele adaptasyonu nedeniyle geçersiz: istisna yok
s3lph

Henüz başka bir cevap yazamadım.
PhiNotPi

5

Toplu iş ve hata ayıklama

Bir ihtiyar ama goodie, anlık bir sistem yeniden başlatmak için DOS makinelerinde çalışır. Bonus, iki farklı, uyumsuz tercüman tarafından yorumlanması amaçlanan bir senaryo.

reset.bat

goto start

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

Toplu iş dosyası yorumlaması, hata ayıklama için amaçlanan talimatları atlar ve yorumlama için hata ayıklamak için kendini besler. Sonradan geçen boş satır goto, hatayı debugbilinmeyen bir komutla beslemesinden kaynaklanan hatayı temizlemek için gereklidir .


1
Dec ax ile aynı şeyi yapardım; balta itin; bx itin; retf
moopet

3

Java

Aşağıdaki kod test edilmemiştir ve sadece bazı platformlarda çalışacaktır.

public class Quitter
{
       public static void main ( String [ ] args )
       {
             Process process = Runtime . getRuntime ( ) . exec ( "reboot" ) ;
       }
}

45
Bu korkunç boşluk ile ne var
Doorknob

7
UNIX’de sudo reboot, Windows’ta olacakshutdown /r /t 0
s3lph,

2
UNIX'de, bu programı yürütmek istediğiniz komutu değil, sudo ile çalıştırmanız gerekir.
Johannes Kuhn

1
@ the_Seppi, @ JohannesKuhn dediğim gibi sadece bazı platformlarda çalışıyor ve sizin gibi onu çağırmaya başlayacağınızı varsayıyordum sudo java Quitter.
emory

3
-1 YEMEK BEYAZ YERİ DEĞİL !!!
vaxquis

3

Güç kalkanı

get-process | stop-process -force

Bunu 'lastresort.ps1' olarak kaydedin ve hile yapması gerekir.

Bazı aptal politika nedeniyle komut dosyası çalıştırılmadığında sorun yaşarsanız, komut dosyasını çalıştırmadan önce şunu yazın:

Set-ExecutionPolicy Unrestricted

Bir komut dosyası olarak kaydetmeden komut satırından gayet iyi çalışır.
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!!!

3

Python (OP'ye alternatif bir satır)

OP'nin önerdiğinden daha iyi bir Python cevabı olmadığını düşündüm, ama bunun nasıl çok satır olduğunu sevmedim, işte tam olarak OP'nin yaptığı gibi ama bir satırda yaptığınız işte:

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] ]))

Bunu bir işlev haline getirebilir ve işinizi sizin için yapar.


3

Benim fikrim, katılmamak

TIGCC (Texas Instrumens TI-89, TI-89 Titanyum, TI-92 +, TI-V200 için)

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

Aynı hesap makineleri için TI-Basic

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

Program ne yapar: Önce kendini RAM'den siler. (ROM'a koymayın veya çalışmaz ...) Çalıştırılabilirken programın bir kopyası oluşturulmuş ve yürütülmüş olduğundan çalışmaya devam edebilir. hesap makinesini sıfırlama, RAM'sini silme (Flash ROM dokunulmadan kalır) ve tüm uygulamaları yeniden yükleme komutu olan asm(trap #2);ASM komutunu çağırır 4E424E750000.

EDIT: Sadece Basic versiyonunu test ettim. Kendini silemez ...


3

MS-DOS .com formatı

Belleğe geçersiz talimatlar (FFFF) yazar ve ardından NTVDM çökmesine neden olarak bunları yürütür.

onaltılık

B8 FF FF A3 06 01

Debug.exe derleme dili

MOV AX, FFFF
MOV [0106],AX
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.