[Armadillo:02631] Re: times()のerrno

SAITOH Akinori email@hidden
2008年 1月 25日 (金) 20:07:30 JST


齊藤と申します。
Yasushi SHOJI さんは書きました:
> At Fri, 25 Jan 2008 17:53:27 +0900,
> fukunaga wrote:
>> Armadillo220を使っています。
>> times()関数は返り値でクロックを返すのですが、

>> errnoは何をあらわしているのでしょうか?
>> なんだか減少するクロックに見えるのですが。。。

マニュアルに書かれているとおりの挙動のようですが。
〜〜〜
times() は過去のある時点から経過したクロック数 (clock tick) を返す。
Linux 2.4 とそれ以前のバージョンでは、この「ある時点」とはシステムが起動
した瞬間である。 Linux 2.6 からは、この「ある時点」はシステム起動時刻の
(2^32/HZ) - 300 (およそ 4億2900万) 秒前となる。この返り値は clock_t 型が
取り得る範囲からオーバーフローするかもしれない。エラーの場合、(clock_t)
-1 が返され、 errno が適切に設定される。
〜〜〜

ただ、日本語マニュアルは誤訳ですね。「about42million」ですから「-42億」
が正しい。「errno が適切に設定される」ってのがよくわかりませんが。
どっちにしても、 errno.hにない値を返してくる場合のerrnoの値に依存
したプログラミングは危険だとおもいます。

時間経過を計りたいのなら、timesではなくgettimeofday()をつかっては
どうでしょうか?
times()は本来プロセス(とその子孫)の消費したCPU量を量るもののようです。

-- 
	齊藤明紀 email@hidden



armadillo メーリングリストの案内