1

UNIX の time(2) システム コール はtime_t time(time_t *t);、戻り値と参照渡しの 2 つの方法で現在の時刻を返します。この冗長性の合理的な理由は何ですか? なぜそれを定義しないのtime_t time(void);ですか?

4

1 に答える 1

1

int古代の歴史ですが、これはおそらく long が 2 つの 16 ビット値によってタンデムでシミュレートされた時期に関連しています。そうでなければ、本当の明白な理由はありません。興味深いことに、UNIX™ 7th Edition マニュアルtimeには廃止された文書が記載されています。

名前

time, ftime – 日付と時刻を取得する

あらすじ

long time(0)
long time(tloc)
long *tloc;

#include <sys/types.h>
#include <sys/timeb.h>
ftime(tp)
struct timeb *tp;

説明

Time は、1970 年 1 月 1 日 00:00:00 GMT からの時間を秒単位で返します。tlocが null でない場合、戻り値もtlocが指す場所に格納されます。ftime エントリは、次のように定義されているように、引数が指す構造体を埋めます<sys/timeb.h>

/*
* Structure returned by ftime system call
*/
struct timeb
{
time_t time;
unsigned short millitm;
short timezone;
short dstflag;
};

この構造体には、エポックからの経過時間 (秒単位)、最大 1000 ミリ秒のより正確な間隔、ローカル タイムゾーン (グリニッジから西への分単位で測定)、およびゼロ以外の場合は夏時間がローカルに適用されることを示すフラグが含まれます。年の適切な時期に。

関連項目

date(1)、stime(2)、ctime(3)

アセンブラ

(ftime = 35.)
sys ftime; bufptr

(time = 13.; obsolete call)
sys time
(time since 1970 in r0-r1)

「廃止された呼び出し」という指定に注意し、戻り値が 2 つの (16 ビット) レジスタr0r1にあることに注意してください。

于 2013-03-12T03:46:50.773 に答える