何もしないで無限に待ち続ける pause(2) みたいなことをするコマンドが無いかなーと探したけど無さそうで、sleep は秒数指定しないといけないのがいまいちなんだけど、まあ sleep 99999999999999
みたいなことすればいいんだけど、それもかっこ悪いなーと思ったら sleep infinity
なんて表記があるらしい。
でも 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
を見たら
無限 は "INF" または "INFINITY" で表され、大文字小文字は区別されない。
だそうな。なるほどなー。
sleep コマンドの機能じゃなくて、中で使ってる関数の処理だったと。
しかしそれにしてもマニュアルに書いておいて欲しい気はする。
まあ無限と言っても、最終的には nanosleep(2) が呼ばれてて、その引数は time_t
で有限なので、実際には無限じゃなくて 百何十年とか何千億年とかなんだろうけども。