C言語での無限ループの作り方
プログラムを作成するときに、無限ループを利用することがあります。C言語では、 while 文や for 文を利用して、無限ループを作れます。ここでは、for や while を利用した無限ループの作り方を紹介します。
読み方
- 無限ループ
- むげんるーぷ
目次
概要
無限ループが必要なシーンは、どういったケースでしょうか?例を挙げてみましょう。
- ウェブサーバのプログラムのように、永久的にクライアントの接続を待ち、接続がきたら、処理をする、を終わりなく続けるプログラム
- ログなどのファイルを永遠と読み続けて、処理し続けるプログラム
上記を簡単に説明すると、以下の様な条件で、無限ループを使うことになります。
- プログラムの終わりが来ない
- いつ終わるかわからない
無限ループは、Unix の デーモンプロセスのようなプログラムでよく利用されます。
無限ループを作る制御文
無限ループを作るときに、利用できる制御文は、以下の通りです。
- for
- while
- do-while
無限ループの作り方
無限ループを作成するときは、ループ文(for, while, do-while)の継続条件を常に、継続するように指定します。
for での例
for の2番目の式(式2) を省略することで、ループは無限になります。
for ( 式1; 式2; 式3 )
式が省略された以下のプログラムは、C言語として、正しいプログラムです。
for ( ; ; ) { doit(); // 処理 }
while での例
while の条件を 1 にすると、常に真になるため、ループは無限になります。
while ( 1 ) { doit(); // 処理 }
do while での例
while と同じように、 while の条件を 1 にすると、ループは無限になります。
do { doit(); // 処理 } while ( 1 );
無限ループを終わらせる方法
無限ループを終わらせるには、 break を使用します。
for ( ; ; ) { doit(); // 処理 if ( 条件 ) { break; } }
ここでは、 for の例を示しましたが、 while/do-while でも同じです。
無限ループを while か? for か?
無限ループを作成するときに、while を使用するか、 for を使用するかは、好みの問題でしょう。
- プログラムを個人で作成する場合には、自分の好みで決める
- 仕事で作成する場合は、会社のコーディングルールに合わせる
- 既存のOSS に参加する場合は、OSSグループのコーディングルールに合わせる
OSの派閥によっては、お作法として明記されているケースもあります。 FreeBSD の bsd style では、無限ループを作成するときは
for (;;) stmt; for (;;) { stmt; } for (;;) { if (cond) stmt; }
などのように、 for() を利用するように明記されています。 詳しくは、FreeBSD の Man ドキュメントの style (スタイル) をお読みください。ドキュメントは、以下のコマンドで参照できます。
% man style
関連項目
ツイート