ようこそ!




  • Google
フォト
無料ブログはココログ

« コマンドラインで1秒より短い時間を指定してスリープさせるには | トップページ

2015/03/22

イマドキのsleepは小数点の指定が出来ていた件

こんにちは、先々週の次男に続き、先週は長男が中耳炎になり、いつも以上に働いていません。長男が楽しみにしていた遠足を控えた週の中頃、熱を出すものの、これは早退して、ゴロゴロ寝て遠足の当日は楽しく参加できた様子でした。が、その後、中耳炎になり、朝から親子共々かかりつけの耳鼻科に行って、休んでいました。kjunichiです。

背景

先日、「コマンドラインで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は小数点の指定が出来ていた件:

« コマンドラインで1秒より短い時間を指定してスリープさせるには | トップページ