sleep infinity で無限に待つ

何もしないで無限に待ち続ける pause(2) みたいなことをするコマンドが無いかなーと探したけど無さそうで、sleep は秒数指定しないといけないのがいまいちなんだけど、まあ sleep 99999999999999 みたいなことすればいいんだけど、それもかっこ悪いなーと思ったら sleep infinity なんて表記があるらしい。

qiita.com

でも sleep のマニュアル見ても infinity については書いてない。

https://www.gnu.org/software/coreutils/manual/html_node/sleep-invocation.html

なんなんだこれ、と思って sleep のソースを見てみた。

https://github.com/coreutils/coreutils/blob/master/src/sleep.c

infinity という単語はどこにも定義されてなくて、アレ?って思ったんだけど、引数を xstrtod って関数で処理してた。 xstrtod は知らなかったんだけど、名前からして strtod の仲間だろうと思って、strtod を見たら

ja.manpages.org

無限 は "INF" または "INFINITY" で表され、大文字小文字は区別されない。

だそうな。なるほどなー。

sleep コマンドの機能じゃなくて、中で使ってる関数の処理だったと。

しかしそれにしてもマニュアルに書いておいて欲しい気はする。

まあ無限と言っても、最終的には nanosleep(2) が呼ばれてて、その引数は time_t で有限なので、実際には無限じゃなくて 百何十年とか何千億年とかなんだろうけども。