도전 과제 : 자체적으로 종료되는 코드를 작성하십시오.


39

나는 절대적으로 전통적인 방식으로 즉시 종료되는 코드 조각을 찾고 있습니다.

이것은 System.exit((int) 'A');(Java)를 의미하지 않습니다 .

다음을 의미 할 수 있습니다.

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

가장 선의적인 답변이 이깁니다! 모든 언어, 모든 아키텍처.

편집 : 예외를 던져서 종료하는 것은 더 이상 허용되지 않습니다!


3
그러나 그것은 실행을 끝내는 exit()데는 관습 적이 지 않습니다 ... 글쎄,이 방법은 대안 이지만 여전히 구현 된 기능입니다 ...
s3lph

13
이것은 코드 트롤링이 아닙니다-우리는 이것으로부터 이상한 답변을 원한다는 것을 알고 있습니다.
Liam Dawson

6
시스템 종료가 작동합니까?
Hosch250

8
한 번 실수로 운영 체제를 통해 네트워크 카드를 DMA로 만들었습니다. 이 문제가 발생하면 즉시 BIOS로 돌아와서 재부팅했습니다.
Ben Jackson

3
나는 기분 섀넌은 우리가 여기에 이길 수있다)
밝은 성급

답변:


44

bash, 6 자

exec [

exec현재 프로세스를 다른 것으로 바꿉니다. [내가 무해하다는 것을 알 수있는 가장 짧은 명령입니다 (의 별칭입니다 test)


다른 예외?
Johannes Kuhn

아니, 단지 exec'를 보내고 [명령 :
데니스 Kaarsemaker

1
왜 작동합니까? [무엇을합니까?
s3lph

@the_Seppi 현재 프로세스를 [(일명 테스트)로 대체 함
Timtech

~ $ echo $PATH/?-> /bin/X /bin/[ /bin/w. 생선 껍질은 나에게 다른 두 가지 명령을 주었다. w제 의견으로는 흥미 롭습니다.
Konrad Borowski

46

세게 때리다

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

사용자가 반응 할 수있는 한 빨리 프로그램을 종료합니다 ;-)


10
그것이 나를 웃게했기 때문에 공감.
Michael Stern

5
Linux에서는 실행하지 않는 것이 좋습니다.
kenorb

1
dd : / dev / hda : 찾을 수 없음
Joshua

39

레드 코드

(배경 : REDCODE가에서 사용되는 의사 어셈블리 언어 인 코어 전쟁 1984 년 AK Dewdney에 의해 도입 된 프로그래밍 게임 그것은 일반적으로 자기 수정 코드를 많이 사용하게 나는 좋은 작은 썼다. 프로그래밍 REDCODE에 자습서를 꽤 몇 년 전. )

MOV 1, 0

이 단일 명령어 프로그램은 자체를 죽일뿐만 아니라 자체 프로그램 코드를 메모리에서 삭제하여 메모리에 흔적을 남기지 않습니다.

지루 해요? 결국, 위의 프로그램은 코드를 덮어 쓰지 않았더라도 어쨌든 죽었을 것입니다. 자, 마지막으로 스스로 닦고 죽기 전에 전체 코어를 깨끗하게 닦는 것입니다.

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

처음 두 명령어는 실제로 대부분의 작업을 수행합니다. DAT 0, 0프로그램 종료 후 빈 명령어 셀 (초기화 됨 )을 이후의 모든 셀에 복사하는 간단한 복사 / 점프 루프입니다 (사후 증가 간접 어드레싱 모드 사용) >), 포인터가 마침내 메모리의 시작 부분을 감싸고 MOV루프 자체를 덮어 쓸 때까지 . 그 일이 발생하면 JMN(JuMp if not zero)는 그것을 감지하고 넘어갑니다.

문제는 이것이 여전히 JMN자체를 닦지 않는다는 것입니다. 그것을 제거하기 위해, 우리는 서로를 필요로 MOV을 닦아 JMN...하지만 그 의미는 우리는 또 다른이 필요 MOV닦아 것을 MOV , 등등. 전체 프로그램은 흔적도없이 사라지게하기 위해, 우리는 하나를 위해 어떻게 든 마련 할 필요가 MOV명령 닦아 모두 자체와 적어도 하나 개의 다른 명령을.

이것이 바로 SPLRedcode에서 가장 이상한 opcode 중 하나입니다. 기본적으로 이것은 "Branch Both Ways"명령입니다. 일반적인 CPU와 마찬가지로 간단한 "프로그램 카운터"레지스터 대신 Redcode VM에는 "프로세스 큐"가 있습니다. 명령에 대한 순환 포인터 목록입니다. 일반적으로 각 사이클에서 명령 포인터가 대기열의 헤드에서 이동하고 명령이 실행되고 다음 명령 (점프 또는 불법 명령이없는 경우 제외)이 대기열의 끝으로 푸시됩니다. 하지만 SPL발생 모두 다음 명령어 (경우에, 주어진 타겟 명령 SPL 1이며, 또한 다음의 명령) 큐에 푸시한다.

이 모든 결론은 두 개의 SPL 1명령어가 실행 된 후 큐에 네 개의 프로세스가 있고 마지막에 대한 모든 프로세스가 완료된다는 것 MOV입니다. 이것으로 s와 그 자체를 JMN모두 지울 수있을뿐 아니라 명령 셀을 둘러싸고있는 빈 코어와 구분할 수 없습니다.SPLMOVptrDAT 0, 0

(또는 이전 명령어 로 변환 된 ptr명령어를 로 대체 할 수 있었 으므로 위의 첫 번째 프로그램과 마찬가지로 자체적으로 삭제되었습니다.)MOV 1, 1MOV 1, 0

추신. 이 프로그램을 테스트하려면 Redcode 시뮬레이터 (일명 MARS)를 다운로드하십시오 . 나도 권하고 싶습니다 CoreWin 또는 유서 깊은 pMARS을 여러 다른 좋은 시뮬레이터도 있기는하지만.


단순히 액세스 위반이 발생하지 않습니까?
Danny Varod

12
액세스 위반? 무슨 이상한 일 이니? (확실히 Redcode는 매우 추상적 인 VM에서 실행됩니다. 모든 주소 지정은 상대적이며 주소 공간은 연속적이며 주기적이며 모든 주소는 유효합니다.)
Ilmari Karonen

MOV 1, 0은 1을 주소 0 또는 다른 방법으로 복사합니까? 모든 어셈블러 언어에서 주소 0은 유효하지 않습니다 (NULL 주소).
Danny Varod

4
구문은 MOV source, dest입니다. 그러나 내가 말했듯이 Redcode의 모든 주소 지정은 상대적이므로 주소는 0실제로 "이 명령의 주소 1"를 의미 하고 주소는 실제로 "이 명령의 주소 + 1"을 의미합니다. (그리고 절대 주소 0은 어쨌든 Redcode에서 특별한 것이 아닙니다. 사실, "모든 상대 주소 지정"디자인의 흥미로운 결과 는 Redcode 프로그램이 핵심에서 절대 주소를 찾는 것이 실제로 불가능하다는 것 입니다! )
Ilmari Karonen

2
이봐, 정말 고마워 나는 핵심 전쟁에 대해 들어 본 적이 없다.
seequ

32

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

이것은 이식 가능한 코드가 아닙니다. ART DS9000 에서 ZOG C와 함께 작동합니다 . 나는 비 전통적인 무기를 사용하는 것이이 도전에 대한이 규정의 자격을 갖추 었다고 생각합니다 . 해당 코드가 페이로드를 전달하는 데 걸리는 지연이 즉시 적용되지 않는 것이 우려되는 경우 , 사전 경고에 대한 조언은 당사에 문의하십시오.

effect of launch

가정용 컴퓨터에서는 컴파일조차하지 않습니다. 올바른 드라이버와 라이브러리가 없습니다. 나는이 프로그램이 덜 환상적인 효과로 컴파일되고 실행되는 인기있는 C 구현이 있다고 들었지만, 시도 할 신경이 없었습니다.


2
최선의 대답, 손을 내밀어 라!
벡터

3
+1. (0) 1; 처음에, 나는 @Gilles 여기에 조업된다 생각 ...하지만 나는 ART 사 웹 페이지를 확인 ... 그리고 그것은이었다 그때 내가 trolled 상황을 크게 깨달았을 때!
vaxquis

30

자바 스크립트

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

단순히 다른 ( 맛있는 ) 웹 사이트로 이동하십시오. :-)

골프 (10 자) :

location=1

7
mmmm, 아이스크림 : P
휘발성

28

씨#

자체를 제외한 모든 프로세스를 종료하여 자체를 종료합니다.

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

약간의 향신료를 만들기 위해 PInvoke TerminateProcess를 사용하는 대신Process.Kill


4
다른 모든 것을 죽이는 매우 독창적 인 방법으로 +1하여 시스템과 함께 프로그램을 다운시킵니다 (적어도 아이디어라고 생각합니까?). 이 컴퓨터에 C # 런타임이 없지만 물어봐야합니다 ... 실제로 시스템을 다운 시키거나 실행중인 모든 프로세스를 종료합니까? (C # 프로그램이 인터프리터 자체를 호출하여 특정 JIT / CIL 프로세스의 존재에 의존하지 않는다고 생각했습니다 ...). 다시 한 번,이 일에 대해 '외부'(har har)라는 훌륭한 직업 사고 :)
혁신적인

4
-1 (내 담당자가있는 경우) : 코드 트롤링의 메타는 사람들이 자신의 컴퓨터에서 시도 할 위험 때문에 파괴적인 답변이 허용되지 않는다고 말합니다. 제한 사항 목록에서 두 번째 글 머리표를 참조하십시오. codegolf.stackexchange.com/tags/code-trolling/info
Kevin-Reinstate Monica

관리자 권한없이 시스템 프로세스를 종료 할 수 없습니까?
Sarge Borsch

3
@Kevin 코드 도전코드 트롤링 은 규칙이 다른 태그입니다.
osvein

3
@ user1981338 : 질문에는 원래 코드 트롤링 태그가 있었지만 그 이후에 편집되었습니다. 이제 태그가 사라졌습니다. +1
Kevin-복원 모니카

21

BASH-12 자

:(){ :|:&};:

클래식 포크 폭탄. 컴퓨터를 잠그고 사용자 (또는 관리자)를 강제로 재부팅합니다.


5
지루하지만 여전히 개인적으로 좋아합니다. 나는 라이브 시스템을 종료 할 때 사용
s3lph

3
그것은 끝없이 가능한 한 많은 시간을 시작합니다.
marinus

1
그러나 컴퓨터가 충돌 할 때까지 가능한 한 많은 프로세스를 시작하여 프로그램을 종료합니다
s3lph

14
1 등 스마일 추가 :()하고:|
ProgramFOX을

1
@Kartik : 첫 번째 공백이 없으면 구문 오류가 발생합니다. 두 번째 것을 제거 할 수 있습니다.
Dennis

20

Python (오래된 노트북)

단일 코어 프로세서 및 불량 냉각 기능이있는 오래된 랩톱에서 :

while True:
    print("CPU Temperature rising")

몇 시간 후에 랩톱이 폭발하거나 전원이 꺼지면 프로그램이 실행되지 않습니다.

(최상의 결과를 얻으려면 노트북을 담요 등으로 감싸십시오)



18

애플 2 기본

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

명령 중 하나를으로 덮어 씁니다 END.


이것은 어떻게 작동합니까?
Johannes

5
@Johannes : Applesoft BASIC에서 프로그램은 토큰 화 된 형태로 메모리에 저장됩니다. OS 또는 메모리 보호 기능이 없기 때문에 항상 같은 위치에 저장되며 해당 메모리에 기록하는 것을 막을 수있는 것은 없습니다. 따라서 첫 번째 POKEEND토큰 위에 PRINT토큰을 POKE쓴 다음 두 번째 는 첫 번째 토큰 위에 명령 종결자를 씁니다 ". GOTO이 실행 되면 END대신 실행되고 PRINT프로그램이 종료됩니다.
marinus

14

어셈블리에서는 다음과 같이 작동합니다.

jmp 0

컴파일하면 실제로 작동하는 DOS를 기억합니다. 당시에는 컴퓨터를 재부팅했습니다.


다시 시도하십시오; 사실은 내가 대답으로이 게시거야 : P
줄리앙 Lebot

retf 현대 운영 체제에서 (내가 말을해야하거나, 일을하지 않는) 이미 답 :에 그것은 방식 때문에 메모리 세그먼트의 작품을 죽이는 것을 넣어 작동합니다
chbaker0

»jmp 0«은 DOS에서 작동합니다. 왜냐하면 코드 세그먼트의 처음 2 바이트는 CD 20이거나 종료 프로그램 코드 인 'INT 20'이기 때문입니다. »푸시 0; ret«whould도 같은 효과가 있습니다.
Daniel

13

PHP

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

효과 : 크
래피 스크립트 파일을 삭제 한 다음 프로그램을 종료합니다.
이 나쁜 소년 중 하나를 코드베이스에 던져 사람들을 혼란스럽게하십시오.


유효한 PHP 구문이 아닙니다. 함수를 정의하려고 시도 quit하지만 매개 변수 목록은 실행할 코드입니다. 실행하려고 할 때 구문 분석 오류가 발생합니다.
Emil Vikström

@ EmilVikström-이제 수정되었습니다.
donutdan4114

12

C, 9 자

함수가 아닌 gcc것과 같은 소소한 세부 사항에 신경 쓰지 않는 다른 컴파일러와 컴파일 하십시오 main. 플랫폼에서
작동 x86-프로그램이 즉시 종료됩니다.

main=195;

195는 ret명령어 의 opcode입니다 .


4
나를 위해 Segfaults. main에 위치하고 있으며 .data그렇지 않은에서, int 형이기 때문에 .text, 그리고 .data비 실행 페이지에로드됩니다.
mniip

10

나는 항상 이것을 어딘가에 게시하고 싶었습니다. 이미 허용되는 답변이 있지만 여기에 맞는 것 같습니다.

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

이것은 4.3BSD 이후의 시스템과 revoke같은 방식으로 구현 되는 다른 시스템에서 작동합니다 . 리눅스는 프로토 타입이 없더라도 MacOS는 과거에했지만 최근 버전에서는 오류 만 반환합니다.

revoke파일의 경로를 가져와 해당 파일에 대한 모든 참조를 강제로 삭제합니다. 여기에는 해당 파일의 모든 메모리 매핑이 포함되며 실행 파일 자체도 포함됩니다. 분명히, 경로로 프로그램을 시작해야합니다. PATH에 있으면 작동하지 않습니다.

대부분의 유닉스 계열 시스템에서 작동해야하는 변형은 다음과 같습니다.

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

우리는 단지 main호출 하는 페이지가 munmap리턴 될 때 리턴 할 곳이 없도록 맵핑되는 페이지를 맵핑 해제합니다 . 함수가 호출 할 가능성이 약간 있습니다munmap 이 페이지 경계에 있고 리턴이 성공할 있으므로, 제대로 작동하려면 두 페이지를 먼저 맵핑 해제해야합니다.

물론 동일한 주제에 대한 변형 :

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

우리가 돌아올 곳이 없도록 스택을 매핑 해제하십시오. 매핑 해제와 동일한 경고main -두 페이지를 매핑 해제해야 할 수도 있습니다 (PA-RISC 또는 다른 이상한 아키텍처를 사용하지 않는 한).

자신의 발 아래에서 깔개를 당기는 또 다른 방법 :

#include <sys/resource.h>

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

시스템이 0 초 CPU 제한을 처리하는 방법과 CPU 시간을 얼마나 자주 처리하는지에 따라 운영 체제에 따라 다릅니다. MacOS는 프로세스를 즉시 종료하고 Linux에는 while 루프가 필요합니다. 내가 시도한 다른 시스템은 1 초 제한과 while 루프로도 아무것도하지 않았으며 더 이상 디버깅하지 않았습니다.


9

sudo kill -SEGV 1

Linux에서 즉각적인 커널 패닉. 자체를 포함하여 모든 프로세스를 폐기합니다

Cmd

pskill csrss.exe

Windows의 즉각적인 블루 스크린. 을 종료합니다 Client/Server Runtime SubSystem. Pskill이 설치되어 있어야합니다.


겠습니까 killall init도 작동?
s3lph

1
@the_Seppi 1 만 루트 레벨 사용자는 신호 (11) (segamentation 결함)을 수신하는 경우에만 커널 인 공황 발생할 2. 초기화를 초기화하기 위해서 신호를 보낼 수
MultiplyByZer0

알겠습니다 감사합니다 ... 사용하면 어떻게되는지 아세요sudo killall init
s3lph

1
@the_Seppi 예, 그렇습니다. 전에 시도했습니다. Init는 신호 수신 여부를 결정할 수 있으므로 SIGKILL을 완전히 무시하므로 무시합니다. unix.stackexchange.com/questions/7441/…
MultiplyByZer0

8

C에서 (호환 가능한 Windows / Linux / (아마도 Unix / Freed BSD도)) :

main;

사용 예 :

Windows에서 다음을 사용하여 컴파일하십시오.

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

그리고 리눅스 :

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

컴파일러가 설치되어 있고 currenth PATH 변수에 있다고 가정하십시오.

편집 : Linux에서는 기술적으로 프로세서에서 발생하는 예외가 발생하지만 Windows에는 그러한 메시지가 없습니다. 따라서이 항목은 유효하지 않습니다. 그러나 나는 그것이 멋진 생각 : P

편집 : x86 어셈블러에서 (NAsm / YAsm 사용)

global s
s:
    ret

다음과 같이 컴파일하십시오.

(윈도우)

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

(리눅스)

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

불행히도이 방법은 Linux에서 코어 덤프를 생성하므로 기능적으로 C 메소드와 동일하다고 생각합니다. 더 효율적인 것을 제외하고.


1
와! 방금 이것을 컴파일 -Wall -Wextra -std=c99 -pedantic했으며 경고가 전혀 없습니다.
ldrumm

실제로 이것을 넣고 싶었지만 다른 문제 ( codegolf.stackexchange.com/a/8778/3103 )에 대한 솔루션의 복제본이 될 것이기 때문에 반대했습니다 .
Konrad Borowski

7

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

6

파이썬


module을 사용 하면multiprocessing 큐를 통해 원래 프로세스와 통신하는 작업을 가진 다른 스레드를 생성하여 종료 시점을 알려줍니다.

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

코드 최적화가 없으면 다음 프로그램이 너무 빨리 종료됩니다. 유효한 프로그램으로 컴파일하더라도 실제로 시작할 수는 없습니다.

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

char tooLong[0x7CFFFFFF];

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

시스템에 따라 다를 수 있습니다. 시작할 수 있으면 주석입니다.


"예외를 던져 종료하는 것은 더 이상 받아 들여지지 않습니다!" 이 메모리 부족 오류를 포함
존 드보락에게

2
@JanDvorak 오류와 예외 사이에는 차이가 있습니다 .
syb0rg

그러나 그 규칙은 둘 다를 포함한다고 생각합니다. asker는 명확히 할 수 있습니까? 그리고 아니요. 특히 C 솔루션을 방어 할 때 Java 관련 SO 질문이 좋은 참조라고 생각하지 않습니다.
John Dvorak

9
프로그램은 오류를 발생시키지 않으며 프로그램 내에서 오류를 발생시키지 않습니다. 시스템이 처리 할 수 ​​없습니다.
Johannes

6

괜찮아. System.exitJava에서 단순히 호출 이 허용되지 않으면 다른 스레드에서 리플렉션을 통해 호출하는 것은 어떻습니까?

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

exit 메소드를 찾고 새 스레드를 생성 한 후 리플렉션을 통해 exit를 호출하여 해당 스레드가 프로세스를 종료 할 때까지 카운트 다운 합니다.


카운트 다운? 그것은 나에게 카운트처럼 보인다.
Justin

1
어, 그래, 좋은 지적이야 나는 카운트 업을 말했거나 종료 될 때까지 카운트한다고 말했다.
David Conrad

6

x86 기계 언어, 1 자

일반적으로 하나의 RET 명령어로 실행 가능한 실행 파일을 만들 수 있습니다

\xC3 

4
그것은 전통적인 방법이 아닙니다!
aditsu

6

C (리눅스)

자살 버전

SIGKILL을 자신에게 보냅니다.

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

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

    printf("Not killed");
}

"Tu quoque mi fili"버전

포크는 아들이 아버지를 죽입니다.

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

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

    printf("Not killed");
}

5

...

그게 다야


설명 : 예외가 발생 Unimplemented하고 즉시 종료됩니다.


설명이 추가되었습니다.
PhiNotPi

3
잘 모르겠습니다. 예외가 지루합니다.

6
예외없이 : 인해 도전 적응에 Invalif
s3lph

나는 아직 다른 대답을 쓰지 않았습니다.
PhiNotPi

5

배치 및 디버그

오래되었지만 좋은 사람은 즉시 시스템을 재부팅하기 위해 DOS 시스템에서 작동합니다. 두 개의 서로 다른 호환되지 않는 통역사가 해석하기위한 하나의 스크립트라는 점에서 보너스입니다.

reset.bat

goto start

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

배치 파일 해석은 디버그 용 명령어를 건너 뛰고 해석을 위해 자체 디버그합니다. 그 뒤에 빈 줄 은 알 수없는 명령 (이동) 인 피드로 인한 결과 goto에서 오류를 지우는 데 필요합니다 debug.


1
나는 dec ax와 같은 일을했다. 푸시 도끼; 푸시 bx; retf
moopet

3

자바

아래 코드는 테스트되지 않았으며 일부 플랫폼에서만 작동합니다.

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

45
그 끔찍한 공백은 무엇입니까
Doorknob

7
UNIX의 경우 sudo rebootWindows의 경우shutdown /r /t 0
s3lph

2
UNIX에서는 실행하려는 명령이 아니라 sudo를 사용하여 해당 프로그램을 실행하면됩니다.
Johannes Kuhn

1
@ the_Seppi, @ JohannesKuhn은 일부 플랫폼에서만 작동한다고 말했듯이 마치 당신이 그것을 호출하려고한다고 가정했습니다 sudo java Quitter.
emory

3
-1 충분하지 않은 흰색 공간 !!!
vaxquis

3

파워 쉘

get-process | stop-process -force

이것을 'lastresort.ps1'로 저장하면 트릭을 수행해야합니다.

일부 바보 같은 정책으로 인해 스크립트가 실행되지 않는 문제가 발생하면 스크립트를 실행하기 전에 다음을 입력하십시오.

Set-ExecutionPolicy Unrestricted

스크립트로 저장하지 않고 명령 줄에서 잘 작동합니다.
Iszi

3

TI 기본 84

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

3

파이썬 (OP의 한 줄 대안)

OP가 제안한 것보다 실제로 더 나은 Python 답변이 없다는 것을 알았지 만 너무 많은 줄이 마음에 들지 않았으므로 OP가 한 것처럼 정확하게 한 줄로 수행하는 방법은 다음과 같습니다.

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

이 기능을 만들 수 있고 당신을 위해 일을 할 것입니다.


3

참여하지 않는 내 자신의 생각

TIGCC (Texas Instrumens TI-89, TI-89 티타늄, TI-92 +, TI-V200)

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

동일한 계산기에 대한 TI 기본

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

프로그램의 기능 : 먼저 RAM에서 자신을 삭제합니다. (ROM에 넣지 마십시오. 그렇지 않으면 작동하지 않습니다 ...) 실행시 프로그램의 복사본이 만들어지고 실행되기 때문에 계속 실행될 수 있습니다. 계산기를 재설정하고 RAM을 삭제 (플래시 ROM은 그대로 유지됨)하고 모든 응용 프로그램을 다시 설치하는 asm(trap #2);명령 4E424E750000인 ASM 명령을 호출합니다 .

편집 : 방금 기본 버전을 테스트했습니다. 스스로 삭제할 수 없습니다 ...


3

MS-DOS .com 형식

유효하지 않은 명령어 (FFFF)를 메모리에 기록한 다음 실행하여 NTVDM 충돌을 일으 킵니다.

16 진수

B8 FF FF A3 06 01

Debug.exe 어셈블리 언어

MOV AX, FFFF
MOV [0106],AX
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.