無限ディスクI / Oの最短コード


49

(Google Chromeで50個のタブを開くだけです:D(冗談です、できません))

任意の言語の無限ディスクI / Oの最短コード、C#の例:

using System.IO;

namespace FileApp {
    static class Program {
        public static void Main() {
            do {
                File.WriteAllText("a", "a");
                File.Delete("a");
            } while (true);
        }
    }
}

ただし、ディスク全体をいっぱいにすることはできません。最終的に停止し、有限になるからです。

そして、あなたは読書だけを行うことはできません、無限の書き込みが発生しなければなりません。(十分なランタイム後にSSDを強制終了する必要があります。)

割れてください!:)


6
読んで彼らはまた、ディスクI / Oとしてカウント書くのではなく、ファイルを?への書き込みは/dev/nullどうですか?(yes>/dev/null有効なBashの答えは?)
ドアノブ

2
入力は可能ですか?
ユーザー112638726

29
ダン男...あなたのSSDはあなたに何をしましたか?
R. Kap

2
私は6バイトのソリューションと競合することを望んでいないので、3バイトの内容を持つファイル./aを作成します。私の知る限り、単に原因となるファイルを実行し、いくつかの非常に少なくとも「最終アクセス時間」で副産物として更新されるので、;-)、多くのシステム上の場所を取るために書き込み、ファイルシステムを
Stilez

3
これらの回答の多くは、データを同じスペースに何度も書き込みます。データが異なっていても、実際のディスク書き込みは発生しません。(極端な場合、DOS-> Windows通信。DOSで4kのデータを書き込み、データがディスクライトを流れている限り、それをWindowsで読み戻します。)
Loren Pechtel

回答:


26

DOS /バッチ:4バイト

%0>x

このバッチファイルはそれ自身(%0)を呼び出し>、出力をx。エコーはデフォルトでオンになっているため、パスとコマンドが出力されます。


これは最終的にディスク容量を使い果たしますか、または出力は上書きされますか?
MathuSum Mut

1
@MathuSumMut:それで>上書きされます。>>追加します
トーマスウェラー

1
あなたが勝ったなら、私は推測する:P
MathuSum Mut

2
@ΈρικΚωνσταντόπουλος:それは本当です。その場合、0バイトのファイルが生成され、このチャレンジで予想されるI / Oは生成されません。しかし、それは私たちのすべてのケースを検討するタスク、そうでなければ、キャッシュをオフにしたい場合があり、ウイルススキャナ、...ではありません
トーマス・ウェラー

1
0バイトのファイルを書き込むと、ディレクトリ内の最終変更時刻を更新する必要があるため、ディスクI / Oが引き続き発生します。

48

PowerShell v2 +、10バイト

for(){1>1}

空のforループで単純に無限ループします。繰り返しのたびに、リダイレクト演算子を使用して整数を1(暗黙的に文字列に変換して)出力します。これにより、ローカルディレクトリで指定されたファイルが上書きされます。> 1


2番目の1を(有効なファイル名を作成する)他のものに置き換えることはできますか、または1にする必要がありますか?
ニックハートリー

1
私のWindows VMでは、Winload.exe十分です
Comintern

文字である場合、変数として扱われ、文字列引用符として扱われるために数字が必要であり、バイトを浪費するため、数字である必要があると思います。:P
MathuSum Mut

1
@QPaysTaxes MathuSumはそれを修正しています。1暗黙的な構文解析が正しく機能するためには、2番目のものが何らかの種類である必要があります。のすべて[0-9]が同じように機能します。
AdmBorkBork 16

1
@Nacht多分それは私の特定の環境の奇妙なことでしょう。ISE(PSv4 Win8.1)で、2番目1を非数値(.\aまたはa.txtなどで指定されていない)に置き換えると、解析エラーが発生します。
AdmBorkBork

28

Pyth、6バイト

#.w]]0

Pythの唯一のファイル出力コマンドは.wです。文字列で呼び出されると、その文字列を追加モードでファイルに書き込みますが、これはこの質問の目的には適していません。2次元配列で呼び出されると、対応する画像をそのファイルに書き込み、ファイルの内容を上書きします。それがこのプログラムの機能です。デフォルトのファイル出力名はo.pngですので、このプログラムo.pngは1ピクセルの白い画像でファイルを無限に上書きします。#無限ループです。


27

より短い(しかし、他の回答よりも退屈な)回答が必要な場合:

バッシュ、5バイト

>w;$0

ディスクI / Oに何かを書き込むコマンド(長さが3バイト未満)がある場合は、これを短くすることができます。何かsyncがうまくいくが、sync4バイトです😛

注:これは、bashから直接実行した場合は機能せず、スクリプトを入力してスクリプト名として実行した場合にのみ機能します。(すなわちecho 'w>w;$0' > bomb; chmod 755 bomb; ./bomb


1
それは私と@isaacgの関係のようです-誰が勝ちますか
ダニエル

8
exec(または. $0)を使用することを好みます。これはPIDを使い果たすと思います。
ムル

1
wここで最初のものが必要ですか?私にとって>wは、空のファイルを作成するだけwで、ループでそれを行うと、mtimeメタデータを継続的に更新する必要があるため、無限のI / Oが作成されます。
ヘニングマクホルム16

1
@HenningMakholmの資格がある場合は、それを入力します。–
ダニエル

2
スクリプトにはこれらのバイトのみが含まれます。それはbashなので、コンパイラーや必要なものは何もありません。
ダニエル

16

ルビー、22 20バイト

loop{open(?a,?w)<<1}

を繰り返し切り捨て1、ファイルに書き込みますa

2バイトのVenteroに感謝します!


3
open(?a,?w)<<12バイト節約します。
ヴェンテロ

ドアノブ、ありがとうございます。私は謙虚です。
MathuSum Mut

それはファイル記述子をリークしますか?それとも、スコープ外になると閉じられますか?(IDK Ruby、ごめんなさい)。
ピーターコーデス

13

cmd、14バイト

:a
cd>1
goto a

1文字列でファイルを現在のディレクトリに無限に上書きします


私はここで新しいです:Windowsの改行(CR LF)は2バイトとしてカウントされますか?


13
PPCGへようこそ!少なくとも最新のシステムであるWindowsは、LF問題なく処理できるはずです。上記LFはWindows 8.1 のみで動作するので、14バイトは正しいです。
AdmBorkBork


13

Bash + coreutils、10

yes \>b|sh

の連続ストリームを書き込みます。>bこれはsh評価のためにパイプされます。 >b単にbゼロバイトに呼び出されるファイルを毎回切り捨てます。


4
1あなたの名前は実際にこのコードのスニペットが何をするかするのが適切であるので
オリヴィエ・デュラック

なぜbありませんかc
電卓

9

Perl 5の、27の 32 22バイト

{{open my$h,'>o'}redo}

ファイルの変更タイムスタンプを変更するだけで十分な場合...

簡単な説明:

{ # Braces implicitly create/mark a loop.
    { # They also create closures, for `my` variables.
        open my $filehandle, '>', 'o';    # Writing to file "o".
        # close $filehandle;   # Called implicitly when
                               # variable gets destroyed.
    } # $filehandle gets destroyed because there are no references to it.
    redo; # ...the loop.
}

以前のソリューション(32バイト): {{open my$h,'>o';print$h 1}redo}

編集: {open F,'O';print F 1;redo} ←投稿する前にコードをテストしませんでした。今、私はそれを修正しなければなりませんでした。


1
:oa perl変数の前に$

@cat:スカラー、配列、ハッシュなどの通常の変数ではありません。それは単に裸語です。コンテキストに応じて、ベアワードはサブ(関数)、グロブ、またはファイルハンドルと見なすことができます。(おそらく他の人も?)
g4v3

8

PHP、60 30 17 16 15バイト

@manatworkが示唆するように、再び更新されました:

while(!`cd>1`);

また、現在テスト済みです。


22バイトの不正行為:

while(exec( '> 1 dir'));

@manatwork 30バイトによる以前の提案:

while(file_put_contents(1,1));

未テスト(このコンピューターで使用可能なphpはありません)43バイト:

for($ a = fopen(1、 'w'); fputs($ a、1); fclose($ a))

ゴルフされた元の45バイト:

$ a = fopen(1、 'w'); while(fputs($ a、1))rewind($ a);

ここでの最初の投稿は、これを試してみただけで参加したためです。ファイルの書き込みが成功する限り、ファイルポインターを巻き戻して開始します。


file_put_contents()より小さくすることはできません。


5
while(file_put_contents(1,1));十分なはずです。コードタグの代わりにPHPを実行php -r '…'するメタに関するコンセンサスに従って、コマンドラインから完全なスクリプトを実行できることに注意してください。-r
-manatwork

これは実際にディスクに書き込むのですか、それともメモリ内のバッファに書き込むのですか
ブライスM.デンプシー

1
@manatworkああ男!改善の余地は常にあることは知っていましたが、それでも…機能が短い名前になっていないのは残念です。:DIはバッファについて知らない..その短い解決策で答えを更新する必要があるのだろうか。
-diynevala

2
短い場合は、回答を更新してください。:)
MathuSum Mut

phpからexec()を呼び出すことはできますか?私はそれがPHPの「スコープ」にもうないことを理解しています。
-diynevala

7

sh、11バイト

w>w;exec $0

これを特殊な文字(loop.shなど)を含まないファイルに保存し、実行可能にして、./loop.shまたはそれと同様に実行します。

これにより、コマンドの出力がwファイルに書き込まれw、毎回前の値が上書きされます。次に、同じプログラムの新しいバージョンで自分自身を置き換えるため、無限に実行できます。


これは1秒不足してい>ます。また、「特別な」$PATHおよび「特別な」umask /ファイルシステムがあると仮定すると、w>>w;$07文字まで縮小できます
-mnagel

@mnagelが>>追記され、それが最終的にディスクを記入します

1
@mnagelだが、あなたはexecを必要としないことについては正しい。他の誰かがそれをやったので、私は更新しません
-isaacg

3
または、おそらくの. $0代わりにexec $0?ただし、それがスタックオーバーフローなどの原因になるかどうかはわかりません。...はい、セグメンテーション違反です。
ムル

7

C、95 94 93 89 78 90 89 76 75バイト

#include<stdio.h>
main(){for(FILE*f=fopen("a","w");;fputc(0,f),fclose(f));}   

繰り返しますが、sudo watch -n1 lsof -p `pidof inf`これは有効であると言っているようです。

スペースDが表示されなかった方法:<

@Jensに13バイトを削ってくれてありがとう:D


1
w+モードは、最初にファイルを切り捨て、読み書きされます。読み取る必要がないので、just wでバイトを削ることができます。これはファイルを切り捨てますが、読み取りモードでファイルを開きません。
メゴ

1
return 0;ループが終了しない場合は不要です。
イェンス

1
fputc(1,f)超冗長の代わりに使用しないのはなぜfprintf(f," ")ですか?
イェンス

1
main(){for(FILE*f=fopen("a","w");;fputc(1,f),fclose(f));}空の条件式はをfor意味するためtrue。76バイト。
イェンス

1
@PeterCordes PPCGはスタックオーバーフローではありません。コードや回答のその他の主要な部分を変更する他者の回答を編集しないでください。タイプミスの修正は問題ありませんが、コメントで事実上正しくない記述の修正を含むあらゆるものを提案する必要があります。

6

バッシュ、26バイト

yes>y&while :;do rm y;done

このワンライナーを拡張すると、次のようになります。

yes > y &      # Write out infinitely to the file y in the current directory
while true     # Let's do something forever
do             # Here's what we're going to do
    rm y       # delete y
done           # That's all we're going to do

これは、10バイトのPowerShell行と完全に競合することはできませんが、他のPowerShell行に対しては独自のものを保持します。6バイトバージョンに関する他の回答を参照してください。


2
while :;ls>l;done
ユーザー112638726

1
古き良きexecトリックは有利になるだろう:ls>l;exec $0。より短いが、退屈。
マナトワーク

:>l;exec $0-ファイルの作成がinodeを書き込む
-user24582

7
削除にもかかわらずyyesまだそれが持っていたのと同じファイルハンドルに書き込みしていきます。実行するlsof | grep yesと、次のようなものが表示され/path/to/y (deleted)ます。これによりディスクがいっぱいになり、失敗します。
ムル

4
代わりに、既存のファイルを切り捨てるwhichをrm y使用でき>yます。また、少し短くなっています。
-aragaer

6

TI-BASIC、12バイト

While 1
Archive A
UnArchive A
End

同じサイズのユーザーlirtosiastによる代替ソリューション:

While 1
SetUpEditor
Archive ∟1
End

これは、TI-83 +およびTI-84 +シリーズの計算機で動作します。

はい、これはAがすでにアーカイブされているか、プログラムの開始時にまったく初期化されていない場合にも機能します!トークン化のため、プログラムはわずか12バイトです。


電卓が使用するフラッシュメモリが「ディスク」としてカウントされるかどうかはわかりません。
-lirtosiast

1
@lirtosiast Jamyの防御では、SSDはフラッシュメモリで構成されています=)
Cort Ammon

いずれの場合でも、バイト数は少なくとも10バイト少なくなります。2番目のMem画面は、9バイト+プログラム名の長さに等しいヘッダーをカウントしますが、ここでは省略しているため、減算できます。
lirtosiast

@lirtosiastこれは、RAMではなく電卓のROM(永続メモリ)に繰り返し書き込みと読み取りを行います。もちろん、電卓の内部には実際のハードドライブはありません:)
ジャミーマハビエル

@lirtosiastありがとう、私はそれについて知りませんでした!(なぜTI-84 +が報告したバイト数が私のハンドカウントと一致しなかったのか疑問に思っていました...)私は答えを更新しました。
ジャミーマハビエル16

6

CPythonの3.5、33の、16バイト

while 1:open("a")

はい、そうです。:D


while 1:open("a","w")短く、stracepythonがオープン、fstat64およびクローズ、間違いなくI / O操作を実行していることを示しています。ファイルがa既に存在する場合は、さらに短くすることができます。これにより、ファイルwhile 1:open('a')が引き続きopenfstat64およびが生成され、ファイルがclose変更されatimeます。
ラドバンガラビック16

@RadovanGarabík:0ありがとう、私はその便利な情報を知りませんでした!もちろん、実装固有のものです。

5

MATL、10バイト

`1[]T3$Z#T

説明

これは、現在のディレクトリで1 呼び出されるファイルに番号を書き込みinout、以前のファイルの内容を上書きする無限ループです。

`       % do...while loop
  1     %   push number 1
  []    %   push empty array
  T     %   push "true"
  3$Z#  %   fwrite function. First input is file content. Second is file name;
        %   defaults to "inout" if empty. Third indicates that any previous
        %   file contents should be discarded
  T     %   push "true": loop condition 
        % implicitly end loop. Loop condition is "true", so the loop is infinite

5

Haskell、20バイト

f=writeFile"b""a">>f

文字列"a"を名前のファイルに書き込み、"b"繰り返します。writeFileファイルが存在する場合は上書きします。


4

JavaScript(Node.js)、43 41バイト

(c=x=>require("fs").writeFile("a",x,c))()

nullという名前のファイルに書き込みa、繰り返します。


1
ファイルへの書き込みcxファイルについてはどうですか?2バイト節約します。また、機能しませんrequire`fs`か?
チャーリー

1
@Charlie書き込みcまたはで良い点xrequire`fs`残念ながら、バックティックを使用して関数を呼び出すと["fs"]"fs"(文字列だけではなく)配列(最初で唯一の要素が渡された文字列)として関数を呼び出すため、機能しません。console.log`test`例えば試してみてください。
ミチャウペルワコフスキ

4

ZSH、14バイト

for ((;;)) :>:

Zshは、Bashや他のBourneのようなシェルとは異なり、条件が適切に区切られていれば、do ... doneフェンスなしのループを許可します

代わりに、とwhile

while {} {:>:}

:は組み込みであることに注意してください。このループを一時停止することはできません。

原則はDigital Traumaの答えと同じです。ファイルには何も書き込まれません。IOは純粋にファイルの作成と切り捨てによるものです。


私は私がmuru、参照してくださいねと思ったことはありません、と言うお奨めコードゴルフをプレイ来る、muruを。PPCGへようこそ:D
cat

1
@catありがとう。:DIは以前に1回プレイしました。
ムル

3

さび、84バイト

fn main(){loop{use std::io::Write;std::fs::File::create("a").unwrap().write(b"a");}}

File::create 既存のファイルを切り捨てて、ディスク容量が不足しないようにします。

使用済みのコンパイラ(1.9 Nightly)は、未使用の結果に関する警告を発行しますが、write(...)それでもコンパイルします。


3

C、92バイト

#include <stdio.h>
main(){for(FILE*f=fopen("a","w+");fprintf(f," "),!fclose(f);;);return 0;}

1バイト節約できるように見えますが

  for(FILE*f=fopen("a","w+");fprintf(f," ")+fclose(f);;){}

そのループの問題は、+が保証された順序を与えないことです。

または再帰的-コンパイラーが末尾再帰を適切に実装していればオーバーフローしません(fは明示的な内部スコープ内にあります)

85バイト

#include <stdio.h>
main(){{FILE*f=fopen("a","w+");fprintf(f," ");fclose(f);}main();}

85バイトバージョンがスタックを爆破しないことを願っています。:P
MathuSum Mut

2
@MathuSumMut:簡単な修正:最適化でコンパイルする必要があります。テールコールの再帰は日を節約します。
ジョシュア

1
ここには、バイトを保存するための多くのスコープがあります。内に物を詰めるための私の答えfor(;;)と、より短い関数についてをご覧くださいfprintf。:あなたはstdio.hのを(そうでないもの)含める必要がなかった場合は、スペースは必要ありません#include<stdio.h>
ピーター・コルド

3

Mathematica、14バイト

For[,1>0,a>>a]

文字列"a"a現在のディレクトリにあるファイルに繰り返し書き込み、存在しない場合は作成します。


文字列 "a"または変数aの内容を書き込みますか?後者の場合、その変数がまだ定義されていない場合はどうなりますか?
マイケルスターン

@MichaelStern a未定義の変数を書き込むため、単にを書き込みますa\n
LegionMammal978

3

C、40バイト

main(){for(;;)write(open("a",1)," ",1);}

ただし、ファイル記述子はすぐに不足します。これは次の方法で克服できます。

45、43のバイト

main(f){for(f=open("a",1);;)write(f,"",1);}

なぜfには2番目の型がないのですか?

2
@cat C(非常にK&Rスタイル)では、デフォルトはintです。
edmz

1
gccとclangは2番目のバージョンをコンパイルしません。GNU Cでさえ、静的/グローバル変数の動的な初期化を許可していません(呼び出しopen()はコンパイル時の定数ではありません)。また、lseekがないため、ディスク領域が不足します。たぶんutime("a","")ループで試してみてくださいctime。(まだopen既知の名前のファイルを作成する必要があります)。
ピーターコーデス

@PeterCordesあなたは正しい、指摘してくれてありがとう。一定。
edmz

それでも、最終的にディスクがいっぱいにならないというOPの要件を満たしていませんが、答えとして残しておく価値があります。(ループの中で私の答えのclose / reopen(O_TRUNC)より良いアイデアがない限り)。以前のコメントとは異なり、タイムスタンプの更新は通常、Linuxで実際のディスクI / Oを実際に生成しません。lazytime私の答えで言ったように、おそらく24時間に1回書くように。
ピーターコーデス

3

C on amd64 Linux、36バイト(タイムスタンプのみ)、52 49バイト(実ディスクアクティビティ)

私はopen(2)フラグをハードコーディングしているので、これは他のABIに移植できません。他のプラットフォーム上のLinuxはおそらく同じを使用しますO_TRUNCが、他のPOSIX OSは使用しない場合があります。

正しい許可引数を渡して、ファイルが所有者の書き込みアクセスで作成されていることを確認するには、+ 4バイト。以下を参照してください。(これはたまたまgcc 5.2で動作します)

やや移植可能なANSI C、38/51バイト(タイムスタンプのみ)、52/67バイト(実ディスクアクティビティ)

@Censの回答に基づく、@ Jensからのヒント。

最初の数値はが戻り値をint保持できる実装用で、FILE *fopen()それができない場合は2番目の数値です。Linuxでは、ヒープアドレスはアドレス空間の下位32ビットにあるため、またはがなくて-m32も機能し-mx32ます。(宣言void*fopen();はより短い#include <stdio.h>


タイムスタンプメタデータI / Oのみ

main(){for(;;)close(open("a",577));}   // Linux x86-64

//void*fopen();       // compile with -m32 or -mx32 or whatever, so an int holds a pointer.
main(){for(;;)fclose(fopen("a","w"));}

バイトを書き込んで、実際にLinux 4.2.0 + XFS +でディスクにヒットしますlazytime

main(){for(;write(open("a",577),"",1);close(3));}

writeforループ条件です。常に1を返すので問題ありません close。増分です。

// semi-portable: storing a FILE* in an int.  Works on many systems
main(f){for(;f=fopen("a","w");fclose(f))fputc(0,f);}                 // 52 bytes

// Should be highly portable, except to systems that require prototypes for all functions.
void*f,*fopen();main(){for(;f=fopen("a","w");fclose(f))fputc(0,f);}   // 67 bytes

非ポータブルバージョンの説明:

ファイルはランダムなガベージアクセス許可で作成されます。ではgcc5.2、-O0または-O3、所有者の書き込み権限が含まれるように起こるが、これは保証されません。 066610進数の438です 。3番目の引数openはさらに4バイトかかります。O_TRUNCなどをすでにハードコーディングしていますが、これは同じABIの異なるコンパイラまたはlibcで壊れる可能性があります。

私たちは、への第2引数を省略することはできませんopenガベージ値が含まれてしまっているため、O_EXCLO_TRUNC|O_APPENDとてもオープンで失敗し、EINVAL


からの戻り値を保存する必要はありませんopen()3常にそうなるので、それがであると仮定します。fd 3を開いて開始した場合でも、最初の反復後に閉じます。最悪の場合、open最後の利用可能なファイル記述子が3になるまで新しいfdsを開き続けます。したがって、最初の65531 write()呼び出しまではで失敗しますがEBADFopenfd = 3を作成するたびに正常に動作します。

577 = 0x241 = O_WRONLY|O_CREAT|O_TRUNCx86-64 Linuxの場合。なしO_TRUNCでは、inodeのmod時間と変更時間は更新されないため、短い引数は使用できません。 書き換えではなく、実際のディスクアクティビティを生成するO_TRUNCように呼び出すバージョンには、依然として不可欠ですwrite

その答えがいくつかありますopen("a",1)。O_CREATは、aまだ存在しない場合に必要です。 O_CREATLinuxでは8進数0100​​(64、0x40)として定義されます。


リソースリークがないため、永久に実行できます。 strace出力:

open("a", O_WRONLY|O_CREAT|O_TRUNC, 03777762713526650) = 3
close(3)                                = 0
... repeating

または

open("a", O_WRONLY|O_CREAT|O_TRUNC, 01) = 3
write(3, "\0", 1)                       = 1   # This is the terminating 0 byte in the empty string we pass to write(2)
close(3)                                = 0

C ++バージョンでopen使用strace -eraw=openしているこのABI のフラグの10進数値を取得しました。

Linux lazytimeマウントオプションが有効になっているファイルシステムでは、iノードのタイムスタンプのみに影響する変更は、24時間ごとに1回だけ書き込みを行います。そのマウントオプションが無効になっていると、タイムスタンプの更新がSSDを使い果たす実行可能な方法になる可能性があります。(ただし、他のいくつかの回答はメタデータI / Oのみを行います)。


代替案:

短い非動作

main(){for(;;)close(write(open("a",577),"",3));}writeの戻り値を使用して3、閉じる引数を渡します。別のバイトを保存しますが、amd64のgcc -O0または-O3では機能しません。3番目の引数のゴミopenは異なり、書き込み権限は含まれていません。 a最初に作成されますが、将来の反復はすべて失敗し-EACCESSます。

より長く、動作し、異なるシステムコールで

main(c){for(open("a",65);pwrite(3,"",1);)sync();} バイトをインプレースで書き換え、sync()すべてのファイルシステムをシステム全体で同期するために呼び出します。これにより、ドライブのライトが点灯し続けます。

どのバイトでもかまいませんので、4番目の引数をpwriteに渡しません。スパースファイルの場合:

$ ll -s a
300K -rwx-wx--- 1 peter peter 128T May 15 11:43 a

〜128TiBのオフセットで1バイトを書き込むと、エクステントマップを保持するために300kiBのスペースを使用するxfsになりました。HFS +を搭載したOS Xではこれを試さないでください。IIRC、HFS +はスパースファイルをサポートしないため、ディスクがいっぱいになります。

XFSは適切な64ビットファイルシステムであり、最大8エクサバイトの個々のファイルをサポートします。すなわち、2 ^ 63-1、最大値off_tを保持できます。

strace 出力:

open("a", O_WRONLY|O_CREAT, 03777711166007270) = 3
pwrite(3, "\0", 1, 139989929353760)     = 1
sync()                                  = 0
pwrite(3, "\0", 1, 139989929380071)     = 1
sync()                                  = 0
...

2

ラケット、46バイト

(do()(#f)(write-to-file'a"f"#:exists'replace))

1
私は、ラケットで答えることを考えていましたが、あなたはそれに私を打ち負かしました。:P

好奇心から、より短い答えを見つけましたか?
ウィニー

1

係数、73バイト

USING: io.files io.encodings
[ 0 "a" utf8 set-file-contents ] [ t ] while

ファイルの内容をnulバイトに永久に設定します。


1

CBM BASIC 7.0、9バイト

0dS"a":rU

このプログラムは、実行時にディスクに繰り返し保存されます。BASICキーワードの省略形を使用しない、より読みやすいバージョンを次に示します。

0 dsave "a" : run

1
ただし、カセットテープが不足していますか?;)
MathuSum Mut

1
@MathuSumMut0 SAVE "A" : RUN
天井キャット

1

Python、32バイト

while 1:open("a","w").write("b")

python 3で実行すると、無限の数の警告が生成されることに注意してください。また、非カウントの実装で実行される場合、おそらくfdsを使い果たします。


ちょうどメモとして、openコマンドの一部writeとなしに短い答えが存在し"w"ます。
Rɪᴋᴇʀ

1

Dyalog APL 15.0、17バイト(非競合)

(⊢⊣⊃⎕NPUT⊢)⍣≢'A'1

現在、ChromeはU + 2262を間違ってレンダリングします。上記の行は次のようになり(⊢⊣⊃⎕NPUT⊢)⍣̸≡'A'1ます。

バージョン15がまだリリースされていないため、これは競合しません。

入力が変更されるまで(つまり、決して)関数(⊢⊣⊃⎕NPUT⊢)を適用します'A'1

⊢⊣⊃⎕NPUT⊢ 関数トレインです:

┌─┼───┐      
⊢ ⊣ ┌─┼─────┐
    ⊃ ⎕NPUT ⊢

右端'A'1変更されずに戻ります。これ(ファイル名、上書きフラグ)は `⎕NPUT 'の正しい引数になります。

'⊃'は'A'1'A')の最初の要素を返します。これが書き込まれるデータです。

次に⎕NPUT、実行され、書き込まれたバイト数(OSに応じて2または3)が報告されます。これはに対する正しい引数になります。

左端'A'1変更されずに戻ります。これはの左の引数です。

右の引数を無視し、左の引数('A'1)を返します。これは、に渡される新しい値になります。

新しい値は古い値と同一であるため、操作は(永久に)継続されます。



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