イマドキのsleepは小数点の指定が出来ていた件
背景
先日、「コマンドラインで1秒より短い時間を指定してスリープさせるには: misc」の記事の投稿に飽き足らず、Qiitaにも同様の話題を投稿したところ、イマドキのsleepコマンドは小数点の指定が出来るとの教えていただいた。
英文のマニュアルの該当箇所まで教えていただいたので、折角の機会なので自分はコードレベルでどうなっているのか確認してみた。
NetBSDのsleepコマンドのソース
IIviというMacintoshがIntelやPowerPCより前のMotorolaの石を使っていた時代にお世話になったBSDのNetBSDはどうなっているのかと、調べてみた。
while ((rv = nanosleep(&ntime, &ntime)) != 0) {
nanosleepを読んでいた。
OSX Yosemiteのsleepコマンドのソース
OSXもてっきり同じ系統のソースを使っているのだろうと勝手に思い、バージョンの確認を以下のコマンドで行った。
strings `which sleep`|more $FreeBSD: src/bin/sleep/sleep.c,v 1.20 2005/08/07 09:11:38 stefanf Exp $ usage: sleep seconds @(#)PROGRAM:sleep PROJECT:shell_cmds-179
OSXのsleepコマンドはFreeBSD製だったことが分かった。
OSXになってからオープンソース対応ということで、秘密主義のAppleもコードを公開しており、
以下のURLにソースがあった。
(void)nanosleep(&time_to_sleep, (struct timespec *)NULL);
じゃぁ、おれの知ってる秒単位のスリープだったのはいつごろの話なんだ
__RCSID("$NetBSD: sleep.c,v 1.9 1997/07/20 21:28:27 christos Exp $");
(void)sleep(secs);
おれが大学院生になった夏に小数点に対応してたのか!この時期、友人たちからPCパーツをめぐんでもらったりで、Mac(※)からDOS/Vに移って、Linux使ってたころで、BSDとは疎遠になっていたんだ。
※:当時のMacは現代のBSDベースのOSXではありません。
まとめ
今回の一件で、結構古くからsleepコマンドは、小数点に対応していたことが分かった。OSXはBSDをベースとは知っていたが、今回の一件で、そのベースがFreeBSDであることが分かった
« コマンドラインで1秒より短い時間を指定してスリープさせるには | トップページ
トラックバック
この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/11179/61320010
この記事へのトラックバック一覧です: イマドキのsleepは小数点の指定が出来ていた件:
コメント