一度だけ実行されるコード


223

ゴール

この課題の目標は、一度だけ実行されるコードを書くことです。これは基本的に、何らかの方法でプログラム、スクリプト、または環境に損害を与えることを意味します。システムを再起動すると、許可されたコードの再実行が許可されます。

得点

投票数。すべての前提条件を明確にリストする必要があります。再起動または停止を開始しただけの回答は失格となります。

グレッグヒューギルは半神であるための追加規則

ルートアクセスは許可されていません。

終了日

コンテストは2014年5月31日に終了します。

編集

このコンテストは人気コンテストに変更されました。


7
@PeterTaylor可能な解決策は自己削除ですが、結果が示すように、それだけではありません。
ルーケイ

101
vi単一の端末環境で呼び出している多くの人にとっては、この効果があり、再起動しない限りそこからの脱出はありません:)ここでの冗談です。
オリオン

6
このような質問を提案するサイトは無料です。
ojblass

16
echo "If you try to execute me again, it means you are an idiot.";<-誰も複数回実行することはありません:P
user3459110 14年

25
ミサイル関連のソフトウェアは資格がありますか?;)
rsegal 14年

回答:


518

徹夜

最後に、Vigilのユースケースです!

def main():
  raise Exception()

「言語仕様」からの抜粋:

キャッチされない例外をスローする関数はすべて間違いであり、罰せられなければならないことは言うまでもない。

...

宣誓が破られた場合、問題のある機能[...] は適切に処罰されます。

どうやって?

シンプル:ソースコードから削除されます。

プログラムが要件を満たしていることを確認する唯一の方法は、そうしないコードを絶対に禁止します。Vigilを使用すると、自動的にこれが行われます

これを行う方法は他にもあります。Vigilにはキーワードが用意されてimploreおり、swearこれらは基本的に特定の事前条件と事後条件を順守するための誓いです。

def main():
  swear 0 > 1

116
間違いなく、これ勝つに値する
マッテオイタリア

77
最後に、現代の十分に用心深い言語です!本番環境での使用を開始します。すべてのバグを削除する必要があります。
クラウディウ

13
私には、キャッチされていない例外をスローするのは必ずしも関数の障害ではなく、コールスタックの関数がキャッチに失敗したために怠慢である可能性もあります。アプリケーション全体のアーキテクチャに欠陥があることを示唆することさえあります(おそらく、コードを再構築せずにその例外を適切に処理する方法がないためでしょうか?)要するに、プログラム全体を削除する必要があります。
ジョナサンプラーノ


32
宣誓の追加ポイント。自信を持って虚偽のステートメントを作成するプログラムは、間違いなく排除する必要があります。
オリオン

293

ほとんどすべてのLinuxディストリビューション、9文字

これはクラシックです!

#!/bin/rm

これをファイルに入れて実行します。

> ed
a
#!/bin/rm
.
wq foo
> ls
Mail mbox foo
> chmod 777 foo
> ./foo
> ls
Mail mbox

Aaand消えた!

何が起こっているのかについて:私は本当に走っているだけrmです!シバン#!と呼ばれます。そして、これらの1つにスクリプトの最初の行として実行可能ファイルへのパスを続けた場合、プログラムローダーはそこに書いたものでスクリプトファイルを実行します-デフォルトは通常または(Bourne-again shell / Bourne shell) 。このスクリプトに渡される最初の引数は、ファイル名自体になります(あなたは含めて非常に多くのソリューションを参照してください理由であるか、そして、ここで同類)。ファイルを作成して実行することで、ファイルのファイル名をに渡すだけです。#!/bin/bash#!/bin/sh%0$0#!/bin/rmrm


9
自分でLinuxを使用したことがないので、スクリプトファイルが削除されると思います。
14年

56
@NateKerkhofs #!シーケンスはシバンを開始します/bin/bash。これは、スクリプトに使用するインタープリターを識別します(通常)。ここで、フランクは/bin/rm「通訳者」として使用しています。rmファイルを削除するプログラムです。Linuxはrmインタープリターになりたいと考えているため、ファイル名を引数として渡します。したがって、ファイルはそれ自体を削除します

19
これはヒステリックです
ojblass

25
@ user80551これにはrootアクセスは必要ありません。
フランク

9
うーん..../foo mbox
イズカタ

241

x86バイナリ、4バイト

F0 0F C7 C8

前提:P5 Pentium CPUで実行する必要があります。

上記の指示は、一般的にF00Fバグとして知られています。接頭辞がlockの無効な命令を実行しようとします

これにより、CPUが完全にフリーズし(停止も再起動もしない)、ルートアクセスも必要ありません。


4
うわー、それは本当に面白いです。
ojblass

31
@JackM:それはありますが、それは質問で明示的に許可されています。
デニス

34
@JackM、それは「スクリプト」の実行を止める素晴らしい方法のようです。
ポールドレイパー14年

5
このバグがいつ発生したか覚えています。カーネルサイドの回避策はほぼすぐに見つかりました。パッチなしでOSを実行していなければ、コンピューターはクラッシュしません。
zwol

3
@RosLuP 209人のユーザー、どうやら。同意しない場合は、投票して先に進みます。
デニス

150

バッシュ、5

>"$0"

長さゼロに切り捨てます。

ファイル名にスペースが含まれていない場合は、>$0のために働く3つの文字


2
実際、シェル解析ルールの特殊なケースのため、プログラムまたはプログラムへのパスにスペースが含まれている場合でも、このようなリダイレクトファイル名で使用される変数には引用符は必要ありません。だから、あなたはいつでも3文字でそれを行うことができます!
apenwarr 14年

3
「$ 0:あいまいなリダイレクト」それは言う@apenwarr引用符ときにファイル名にスペースが含まれている

1
@apenwarr、そのスクリプトを解釈するシェルがksh88に基づいているか、posixモードではないbashである場合に必要です。スペースではなく$IFS、bashの任意の文字と、bashとksh88のワイルドカード文字についてです。シバンの少ないスクリプトは通常、システムのshによって解釈されますが、bashやksh88などの一部のシェルは、代わりに自分の子で解釈します。
-sch

144

gzip

#!/bin/gzip

非破壊的なコマンドラインツールに慣れている人にとってはgzip、デフォルトでは元のファイルが破壊され、gzip圧縮されたバージョンに置き換えられます(サフィックスを追加します)。

これは、#!/bin/rmオプションのバリエーションです。ただし、これは手動での介入(呼び出しgunzip)によって回復可能であることを除きます。特別なボーナスとして、結果のファイルは元のファイルよりもはるかに長くなります(違いはファイル名の長さによって異なります)。

警告:場所はgzip異なる場合があります。

編集:WCharginが指摘したように、これはよりポータブルです:

#!/usr/bin/env gzip

ファイルの残りの部分には任意のコンテンツを含めることができます。これは基本的にファイルであり、呼び出されたときにボックスに隠れ、強制的に展開するまで出てこない。


7
私は前にそれを考えたことがありませんが、あなたは絶対に正しいです。
ojblass

非常に興味深い
グリジェシュチャウハン

11
「警告:の位置がgzip異なる場合があり」 -これはではないコードゴルフ、あなたが使用できるように#!/usr/bin/env gzip
wchargin

37
ちょうどIt's essentially a file that, when called, hides itself in a box and refuses to come out until you forcibly unpack it.あなたが私の一日を作ったために+1 、それは午前1時です。
拍手

これは基本的にファイルであり、呼び出されたときにボックスに隠れ、強制的に展開するまで出てこない。私を笑わせた。:D
Mischa

121

バッシュ、13 12

最短ではありませんが、実際にファイルを削除したり、システムを使用不能にしたりすることはありません。

chmod 0 "$0"

ファイル名にスペースが含まれていない場合は、引用符を削除して2文字を節約できます。

説明

すべての許可(rwx)をそれ自体から削除します。手動でアクセス許可を復元せずに、2回目に実行しようとしたり、コードを表示しようとすると、次のようなメッセージが表示されます。

bash: <FILENAME>: Permission denied

権限を復元します

chmod +rwx <FILENAME>

旧版

実行権限のみを削除しますが、1文字長くなります(これは、変更される前の質問でした)。

chmod -x "$0"

ŁukaszNiemierによる卑劣なバージョン

#!/bin/chmod 0

4
chmod 0も動作します
ニブラー

@gnibbler thnx、追加

私はあなたがプログラムを呼び出すことができると思うaと、まだ3つの文字を保存しますchmod 0 a
よ」

その基本的に浮気だけれども@tohecz

5
でも、よりよい#!/bin/chmod 0
Hauleth

112

6800マシンコード-1バイト

0xDD

これはHCFまたはHalt and Catch Fireとして知られています


78
まあ、ルールは「リブートまたは停止を開始するだけの回答は失格となります」と言っていますが、これは単に停止するだけではありません。したがって、+ 1!
トレイカズ14年

94

シェル+ sed、16バイト

他の答えのいくつかほど破壊的ではありません;-)

このスクリプト#は、それ自体のすべての行の先頭にコメントを挿入します。

sed -i s/^/#/ $0

3
どうsed -i g $0
seshoumara

91

Commodore 64 BASIC

これはプログラムを削除しません。

1 POKE 2048,1

Self-destruct

Commodore 64メモリマップによると、アドレス2048は使用されませんが0、BASICプログラムを実行できるように値を含める必要があります。


1
pokeは単に変数をある場所に移動するだけですか?
ojblass

12
@ojblassはい、事実上。 poke a, bCコードと同等です*((unsigned char *)a) = b;
ジュール

4
FaceBookをそのように突くように視覚化したいと思います!
サニーRグプタ14

3
ああ、C64 BASICのPEEKとPOKEを覚えています!私は1977年の周りにこのようなものを書いていた
Fixee

サイドノート:0バイトはコード行の終わりを示すために使用されます。したがって、アドレス0x800には最初のコード行の先頭をマークするためにおそらく1つが必要です。
タイタス

89

前提:ルートとしてログインし、Solarisを実行している

killall

3
solarisは本当にそのようなものを持っていますか?
ojblass

21
はい、それはブリキに書かれていることを実行し、実行中のすべてのプロセスを強制終了ます。
グレッグヒューギル

あなたのための1つの賛成票!
ojblass

9
1、質問ではルートアクセスは許可されていません。
user80551

119
@ user80551彼はそのルールの理由です。
セイリア

68

Python、18

open(__file__,'w')

ファイルを書き込み専用モードで開いて切り捨てます。


14
念のため、それ自体を開きます(__file__独自のファイル名を参照します)。wモードで開くと、ファイルが切り捨てられ、基本的にはクリアされます。
ボブ

7
私は考えて切り捨てがオープンに起こるが、関係なく、Pythonランタイムは、プログラムの終了時に開いているすべてのファイルをフラッシュする必要があり、処理が終了したときにPythonやOSのいずれかが、それらを閉じます。「もちろん、開いたハンドルを使い終わったら明示的に閉じることをお勧めします。
ボブ

5
Pythonでファイルを処理する「正しい」方法は、... er、withです。with open("myfile.txt","r") as thefile:ファイル処理コードは、完了時に自動的にファイルを閉じます。
シルコート

1
これはのようなものに短縮できますopen("f.py","w")
イーサンビアライン

1
.pycが残っている場合は動作を停止しません
minmaxavg

66

バッチ:5バイト

%0|%0

基本的にはWindows用のフォークボムです。

アプリは最初の引数を2回起動します。生産的な環境で実行しないでください;)


83
生産的なWindows環境はありますか?(もちろん冗談です)。
オリオン

17
それはとても無邪気に見える!
ojblass

15
OK、絶対に試さないでください。うまくいきませんでした。
rmobis

75
投票する担当者はいませんが、可能な限り最も深刻な方法で「1回のみ実行」に違反しています。
ザン14

14
私は人間がそれを一度だけ実行し、資格があると信じています。
ojblass 14

54

JavaScript

localStorage.x = eval(localStorage.x + localStorage.x)

初めて実行すると、正常に実行されます。

>>> localStorage.x = eval(localStorage.x + localStorage.x)
NaN

さらに更新しようとすると(更新しても)エラーが発生します。

>>> localStorage.x = eval(localStorage.x + localStorage.x)
ReferenceError: NaNNaN is not defined

5
何度も実行すると、バットマンのテーマが表示されます。そのために+1。
ハンクレコード

2
これがないので@Hankrecords悲しいことに、本当に、やる...後に実行されない
RedClover

@Soaku Bummer ...
ハンクレコード

を削除しない限り@Hankrecordsですevalが、このチャレンジは実行されません
RedClover

46

IBMのVM Hypervisorでゲストとして実行されるシングルユーザーオペレーティングシステムであるIBMのCMSオペレーティングシステムには、興味深いファイル構造があります。

ファイルは、ファイル名、ファイルタイプ、ファイルモードの3つの要素で構成されます。ファイルモードは、説明を簡単にするためにWindows / MS-DOSのドライブ文字と同じように見なせる単一のアルファベットと、1つの数字の2つの要素で構成されています。

単一の数字には、http://publib.boulder.ibm.com/infocenter/zvm/v5r4/index.jsp?topic=/com.ibm.zvm.v54.dmsa3/hcsd0b10127.htmの意味があり、このタスクでは興味深いのは3番です。

ファイルモード番号3
ファイルモード番号3は、ファイルが読み取られた後に消去されることを意味します。ミニディスクまたはSFSディレクトリにコピーを保持したくない場合は、ファイルモード番号3を使用できます。

したがって、スクリプトを書くのに何時間も費やし、「LOST FOREVER A3」としてファイルしてください。実行してください。初めて動作します。家に帰り、仕事はよくやった。

消去を示すメッセージは生成されないことに注意してください。結局のところ、誰もがそれを知っています3意味するのいますよね?

もちろん、実際には非常に便利です。テストが完了したら、使用することができます3、一時ファイルをできます。これらは読み取り専用ファイルであるため、後でクリーンアップする必要はありません。


44

Commodore 64 BASIC

0 NEW

NEW プログラムを削除します。


1
それは何ですか?
ダースエグレギアス

3
私は基本的な覚えていれば@ user973810、新しいメモリをクリーニングするためのものですので、プログラム削除させていただきます
user902383

3
いいね 80年代からほぼすべての8ビットBASICマシン上にあるようではない具体的なコモドール64に、おそらく...作品
ysap

OLDまたはOでも可能です。私は、12歳のゲームコーディングの天才を12か月間新しいものにしました。その後、古いものの代わりに誤って保存されました。O.はもう動作しませんでした:(16進エディターが非常にシャープに動作する方法を学びました:)
マットウォーレン14年

3
@ysap:行番号として1を使用すると、より移植性が高くなります。ないすべての基本的な実装では、サポートされている行番号0
celtschk

41

バッシュ、12

注:これは破壊的です。

:(){ :|:&};:

人気のあるbash fork爆弾です。それは指数関数的にすべてのメモリを消費し、PIDはシステムをロックします。ハードリブートにより、コードを再度実行できるようになりますが、なぜそうするのでしょうか。


バッシュ、10

:(){ :&};:

2文字少ない場合、これはメモリを直線的に消費します。


バッシュ、7

w;PATH=

w 考えられる最短の実行可能ファイルとして選択されます。

これは単純にパス変数を消去するので、シェル/usr/bin/wは次回を見つけることができません。通常、パスは次の場所に保存されるため、シェルを再起動すると修正されます。~/.profile


くそ

1
:(){ :&};:あなたの記憶を食べてはいけません。分岐するとすぐに停止するため、O(1)アクティブなもののみが存在します。あなたがやったwhile(fork());ことは、あなたの記憶を直線的に食べることは何に相当するかですfork(); while(1);
マリヌス

26
うわー!これらは致命的な絵文字です!私は、最高の自分のコンピュータがfrownyfaceをbignosed呼び出さない:(){ ....
レベル川セント

1
正しく覚えていれば...フォークボムは定期的に1つのPIDを開いたままにします。この間隔でスクリプトを再度実行できます。それがカウントされない場合、何らかの努力ですべてのフォークを強制終了できます。再起動は、最も簡単なソリューションです。
ブリリアンド

11
これは資格があるとは思わない。スクリプトを再度実行することを不可能にするのではなく、代わりに(何度も)実行されることを保証します。
ベンフォイト

20

C#

自己を削除するための最短コード

Process.Start(new ProcessStartInfo("cmd.exe", "/C choice /C Y /N /D Y /T 3 & Del \"" + Assembly.GetExecutingAssembly().Location + "\""));

UIで目立たないようにするためのコード

Process.Start( new ProcessStartInfo()
{
    Arguments = "/C choice /C Y /N /D Y /T 3 & Del \"" + Assembly.GetExecutingAssembly().Location+"\"",
    WindowStyle = ProcessWindowStyle.Hidden, CreateNoWindow = true, FileName = "cmd.exe"
});

7
最後に、C#の答え!
ファラプ14年

なぜ選択が必要なのですか?
wizzwizz4

19

C ++ 71

実行可能ファイル「ゴルフ」は、次回実行の許可を拒否されます。

#include <stdlib.h>
int main()
{
system("chmod a-x golf");
return 0;
}

コンソールテスト付きJavaScript / HTML 137、145

<script id="s"> 
function h(){
console.log(1);
var s=document.getElementById("s");
h=s.innerHTML;
h=h.replace("h","g");
s.innerHTML=h;
}

11
JavaScriptのコンテキストで@Templar、ページの

2
ページからスクリプトを削除していなくても、スクリプトは一度だけ実行されます。これには意味がありません。
アンダースコア

2
@nderscore 関数 hは、一度だけ実行されるもののようです。あなたは実際に他のどこかからそれを呼び出さなければなりません(私は推測します、プログラムの実行に似ています)。、と言います<button onclick="h();">
ボブ

4
ページの再読み込みが許可されており、あなたの目標はhが既に読み込まれている間にhが複数回実行されるのを防ぐことだけですから、何が問題なのfunction h(){h=0}でしょうか?
キーン

1
#include <sys/stat.h>あなたがアクセスすることができchmod、かなりの数のバイトを保存しない、直接の機能を(<stdlib.h>もはや必要とされ、どちらもありませんsystem)。また、return必要ありません。
ベンフォイト14年

19

私の名前のシェル... PowerShell

古典的な自己破壊メッセージ:

@'
##################################
Project X is a go

Meet Eagle 1 at WP Alpha

Further comms is hereby prohibited
##################################
This message will self destruct in 
5 seconds
'@
5..1| %{$_;Sleep 1;}
"Goodbye"
rm $(.{$MyInvocation.ScriptName})

説明してください?
noɥʇʎԀʎzɐɹƆ

@noɥʇʎԀʎzɐɹƆ13までの行はナンセンスです。その後、他のシェルと同様に、PowerShellは実行中のスクリプトをメモリにロードするため、元のスクリプトファイルは不要になります...そのため、自身を削除します。
SomeShinyObject

18

バッシュ(5)

rm $0

ファイル名にスペースがないと仮定します。


40
これが、UnixがWindowsよりも優れている理由です。delの代わりにrmを使用すると1バイト節約できます。
MadTux 14年

1
@MadTux Unixよりも* nixが好きです。
wizzwizz4

14

sh

#!/bin/sh
curl http://runonce.herokuapp.com/

システムを再インストールし、スクリプトを再配置しても、一度だけ実行されます(実行すると「Hello、world!」と表示されます)。


編集:私もrunonceの背後にあるスクリプトをリリースすると思いました。特別なことは何もありません。どちらの方法でもリリースされるはずではありませんでしたが、何でも。

<?php
$db = pg_connect("[connection information]");
$ip = isset($_SERVER["HTTP_X_FORWARDED_FOR"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];

pg_query("DELETE FROM users WHERE time < now() - interval '1 day'");

$result = pg_query_params($db, "SELECT * FROM users WHERE ip = $1 LIMIT 1", array($ip));

if (!pg_fetch_row($result)) {
    echo "Hello, world!\n";
    pg_query_params($db, "INSERT INTO users (ip) VALUES ($1)", array($ip));
}

データベーススキーマと同様に

CREATE TABLE users (
    ip inet PRIMARY KEY,
    time timestamp with time zone NOT NULL DEFAULT now()
);
CREATE INDEX ON users (time);

データはHerokuのデータベースに保存されます。必要に応じて、プライバシーポリシーを確認てください。データベースに保存されているデータをチェックするのではなく、純粋にコードを保存して、コードを1回実行できるようにします。


4
私はこれが複数回実行されると主張しますが、最初の後には何も出力しません。
ブリリアンド

5
それは私にとって「Hello World」を一度も表示しませんでした。
パエロエベルマン14

1
@StéphaneGourichon:はい、IPを記憶しています。自動削除の前にIPを削除する方法はありません。ソースコードを配置することにしました。
コンラッド

1
@StéphaneGourichon:pg_query_paramsSQLインジェクションからほとんど保護します。ただし、'; DROP TABLE users;--有効なIPではないため(IP inetのみを受け入れる)、X-Forwarded-For保存されません。したがって、偽のヘッダーがある場合、訪問は保存されません。私はそれを自分で問題とは考えていません。
コンラッド

2
これは標準的な抜け穴、つまり本当の答えをアウトソーシングすることへの違反だと思います
juniorRubyist

12

PHP、22 20文字

<?=unlink(__FILE__);

編集:コメントごとに最後の2文字を削除しました。


2
これは、さらに簡素化することができる。<?unlink(__FILE__);、末尾が?>必要とされない
leepowers

で開始する<?=必要があるか、開始タグが認識されません。
マイケルミオル14年

2
PHPはそれ自体を破壊します... ha!E_NOTICE行3048
メタディング14年

<?+スペースも大丈夫です。短いタグの後に文字を使用することはできません。
タイタス

11

ルビー、14

プログラムの名前としてソースコードを書き換えます。

IO.write $0,$0

3
また、プログラムの名前が「IO.write $ 0、$ 0」の場合はどうなりますか?「仮定:どの言語でも有効なコードではないプログラムに名前を付けてください。」
ブリリアンド

@Brillandのルビプログラムは.rb、名前が「IO.write $ 0、$ 0#.rb」であっても常に終了する必要があります。
Mhmd 14年

3
@Mhmdのルビープログラムは何でも終わらせることができます。たとえば、gemおよびirb拡張子のないRubyプログラムです。
bfontaine 14年

@bfontaineシバンがあります。これはしません。
wizzwizz4

@ wizzwizz4 Shebangsは拡張機能とは関係ありません。ruby fooそしてruby foo.rbシェバングの有無にかかわらず同じように動作します。./fooそして./foo.rb(それらが実行可能であると仮定すると)シバンなしで失敗し、成功します(正しいコードを仮定するなど)。
bfontaine

10

バッチ(6文字)

これは、ファイルを削除する権限があることを前提としており、もちろんWindows(MS-DOSでも可能)で実行できます。

del %0

10

Bash 9 8文字

nc -l 1&

ポートは永久にブロックされるため、一度だけ実行されます。


1
0特別なポートであるため、これは機能しないと思います(予約されています)。これをコンピューターで実行すると、複数回開くことができます。また、これはポート< 1024です。つまり、待機するにはルートアクセスが必要です。
heinrich5991

nc -l 1&0最後のスペースが不要なので、問題を修正し、1バイト短くなります。
カスペルド

@kasperd入力をありがとう:-)
ファルコ14年

@ heinrich5991 OK-9654のようなポートを使用するためにルートアクセスなしで11文字が必要になるよりも
ファルコ

なぜあなたがダウン投票したのかを説明することに注意してください。
ファルコ14年

9

NodeJS-33バイト

require('fs').unlink(__filename);

言語に不慣れな人にとってこれが何をするのか説明していただけますか?
カイルカノス

1
@KyleKanosファイルシステムモジュールfsと現在のファイル名__filenameを取得し、そのファイル名をファイルシステムから削除します。
キーン

7
JavaScriptではセミコロンがオプションであるため、セミコロンを省略できます。
nalply 14年

8

バッチ、7文字

これを試す前に、保存していない作業を保存してください。

64ビットシステム、または2 GB未満のRAMメモリを搭載した32ビットシステムを想定しています。起動する前に.batまたは.cmdファイルに保存する必要があります。cmd.exeに入力するだけでは機能しません。

^ nul<^

CPUコア全体を消費し、1秒あたり数百メガバイトの速度でRAMメモリを満たします。時間内に停止しないと(タスクマネージャー)、コンピューター上のRAMのすべてのバイトを消費し、システム全体がフリーズし、強制的にシャットダウンしてコンピューターを再起動するまで何もできません電源ボタンまたは電源ボタンを押したままにします。

すべてのクレジットは、このためStackOverflowのtxtechhelpに移動します。詳細については、https://stackoverflow.com/q/23284131/1955334を参照してください。


これはどのように可能ですか?ページングは​​どうですか?プロセスの優先度
ニコラスバルブレスコ14年

このスクリプトを実行しましたが、何も起こりませんでした。
パベル

@Pavelその後、Windows 10で修正されると思います。Windows 10では再現できませんが、Windows 8.1では動作します。
bilde2910 16

1
「フルCPUコアを消費し、1秒あたり数百メガバイトの速度でRAMメモリをいっぱいにします。時間内に停止しない場合(タスクマネージャー)、コンピューター、システム全体のRAMのすべてのバイトを消費します。電源が切れるか、電源ボタンを押したままにしてコンピュータを強制的にシャットダウンして再起動するまで、何もできません。」...コンピュータ用のホラーストーリーのような音
noɥʇʎԀʎzɐɹƆ

7

ここにカップルがあります。多くとは異なり、これらは破壊的ではなく、創造的で非正統的です。

バッシュ

#!/usr/bin/env bash
read <<< ''
printf "$REPLY" > "$0"

これは非常に簡単です。変数$REPLYはによって暗黙的に作成されますがread、空のherestringで埋められます。その空の文字列はprintf、現在のスクリプトに追加されます。これは、次のものにかなり難読化されたものです。

#!/usr/bin/env bash
cat <<< '' > "$0" # probably a lot more portable

Windowsバッチ

copy con %0 < nul

2番目のものは、基本的に、から入力されたコンソール入力をnul現在のファイルにコピーします。


これは人気コンテストになった後に投稿されました
アイザイアメドウズ

1
最初のものは、ルート権限がないと機能しません。ヌルデバイスを交換しようとするのはなぜですか?rootとして実行すると、実際にはシステムが不安定になります。また、nullを書き込み中にnullを上書きしています:) mv "$ 0" "$ {0} x"などのようなものですか?トリックを行う必要があります。
オリオン

ファイルはその後も存在しますか?
メドウズ

Bashの例を完全に変更しました。
イサイアメドウズ

これらはどのように破壊的ではありませんか?
ysap 14年

7

シンクレアベーシック

10 POKE 23635,255

メモリ内のBASICプログラムのアドレスをあるべき場所から移動し(203)、インタープリターが間違ったデータを検出するようにします。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.