dポイントプレゼントキャンペーン実施中!

HP-UXのシステム起動時からの時間(uptime)をC言語で取る方法を教えてください。
497日問題のような上限値があるのか?あればどのタイミングで上限に達するのか?
達したらどうなるのか?(0に戻る?)も出来れば教えていただきたいです。

カーネルのバージョンによる違いがあればお願いします。

A 回答 (4件)

なるほど…。

であれば、CPUの使用時間(ユーザー・カーネル)など、全てを
足しあわせて算出するほかないようですね。
自分の中にある時間情報も使えず、おそらく外部のネットワークに時間を
問い合わせるのも、禁止なんでしょうね。
それで分以下の精度となると、ちょっと今の私には解決案が思いつかないです。
申し訳ない。
    • good
    • 0
この回答へのお礼

何度もありがとうございます。
HP-UXのuptimeコマンドのソースが見れたらいいんですけどねぇ。
CPU使用時間の合計とuptimeコマンドの値がなぜ微妙にズレるのか…。
そこがミソですね。

もう少し待って回答がなければ質問を締め切りたいと思います。

お礼日時:2010/07/01 23:21

紹介したページにある、


00817 get_uptime(void)
の実装でも同様ですか?

この回答への補足

なるほど。趣旨を説明していませんでした。すみません。
今回の目的は、システム時刻の変更に影響を受けない時間を取りたかったので、gettimeofday()のような時刻変更に影響を受けるものを使ってuptimeを取得する方法はNGなんです。すみません。

補足日時:2010/06/30 20:22
    • good
    • 0

http://net-snmp.sourceforge.net/dev/agent/system …

00781 #if defined(hpux10) || defined(hpux11)
00782 pstat_getstatic(&pst_buf, sizeof(struct pst_static), 1, 0);
00783 boottime_csecs = pst_buf.boot_time * 100;
あたりが参考になるかも。

あるいは、system("uptime > /foo/temp.txt");
などとして、uptimeの実行結果をテキストに出力させ、
ファイルの中身を確認するなど。

この回答への補足

回答ありがとうございます。
上のは起動した時間(boot_time)ですね。
pstat_getprocessor()のcpu稼動時間を合計するとuptimeに近い値は取れるんですが、数分ズレてるし、時間が経つとuptimeコマンドとの値の差が大きくなっていきます。

uptimeコマンドは分精度なんで使えないです。

補足日時:2010/06/29 21:00
    • good
    • 0

497日問題(?)など、詳しい仕様は知りません。


/proc/uptimeに以下のような情報がありませんか。
http://www.redhat.com/docs/manuals/enterprise/RH …
====
350735.47 234388.90

最初の数字は、システムが起動されている時間の総数を秒単位で表しています。 2番目の数字はその時間のうちのアイドル時間を秒単位で表しています。
====
秒を取得できれば表示したい情報は、計算で求まるのではないかと思います。

この回答への補足

FedoraやCentOSなどのLinuxではそうですね。
HP-UXは/proc/uptimeがないので困ってます(^^;

補足日時:2010/06/28 20:21
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!