Man page - rtime(3)

Packages contains this manual

Available languages:

en fr ja ru ro

Manual

RTIME

名 前
書 式
説 明
返 り 値
エ ラ ー
属 性
注 意
バ グ

関 連 項 目
こ の 文 書 に つ い て

名 前

rtime - リ モ ー ト マ シ ン か ら 時 刻 を 取 得 す る

書 式

#include <rpc/auth_des.h>

int rtime(struct sockaddr_in * addrp , struct rpc_timeval * timep ,
struct rpc_timeval *
timeout );

説 明

こ の 関 数 は RFC 868 に 記 述 さ れ て い る タ イ ム サ ー バ プ ロ ト コ ル を 使 用 し 、 リ モ ー ト マ シ ン か ら 時 刻 を 取 得 す る 。

タ イ ム サ ー バ プ ロ ト コ ル は 00:00:00 UTC, 1 Jan 1900 か ら 秒 数 を 提 供 す る の で 、 こ の 関 数 は 適 切 な 定 数 値 を 引 く こ と に よ り 、 提 供 さ れ た 値 を Unix に お け る 時 刻 紀 元 (1970-01-01 00:00:00 +0000 (UTC)) か ら 秒 数 に 変 換 す る 。

timeout が NULL で な い 場 合 、 udp/time ソ ケ ッ ト (ポ ー ト 37) が 使 用 さ れ る 。 そ れ 以 外 の 場 合 、 tcp/time ソ ケ ッ ト (ポ ー ト 37) が 使 用 さ れ る 。

返 り 値

成 功 し た 場 合 は 、 0 が 返 さ れ て 、 得 ら れ た 32 ビ ッ ト の 時 刻 値 は timep->tv_sec に 格 納 さ れ る 。 エ ラ ー の 場 合 は 、 -1 が 返 さ れ て 、 errno が 適 切 に 設 定 さ れ る 。

エ ラ ー

内 部 で 使 用 し て い る 関 数 ( sendto (2), poll (2), recvfrom (2), connect (2), read (2)) の 全 て の エ ラ ー が 起 こ る 可 能 性 が あ る 。 更 に 次 の エ ラ ー が 起 こ る 可 能 性 が あ る :

EIO

返 さ れ た バ イ ト 数 が 4 バ イ ト で な い 。

ETIMEDOUT

timeout で 定 義 さ れ た 待 ち 時 間 の 期 限 が 切 れ た 。

属 性

こ の 節 で 使 用 さ れ て い る 用 語 の 説 明 に つ い て は 、 attributes (7) を 参 照 。

Image grohtml-19045-1.png

注 意

IPv4 の み が サ ポ ー ト さ れ て い る 。

in.timed の バ ー ジ ョ ン に よ っ て は TCP し か サ ポ ー ト し て い な い も の も あ る 。 use_tcp を 1 に 設 定 し て 、 例 に あ る プ ロ グ ラ ム を 試 す こ と 。

バ グ

glibc 2.2.5 以 前 の rtime () は 、 64 ビ ッ ト マ シ ン で 正 確 に 動 作 し な い 。

こ の 例 で は ポ ー ト 37 が ア ッ プ さ れ て オ ー プ ン さ れ て い る 必 要 が あ る 。 /etc/inetd.conf の time エ ン ト リ ー が コ メ ン ト ア ウ ト さ れ て い な い こ と を 確 認 し て ほ し い 。

こ の プ ロ グ ラ ム は "linux" と い う コ ン ピ ュ ー タ に 接 続 す る 。 "localhost" を 使 っ た 場 合 は 動 作 し な い 。 結 果 は コ ン ピ ュ ー タ "linux" の ロ ー カ ル 時 刻 で あ る 。

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <time.h>
#include <rpc/auth_des.h>
#include <netdb.h>

static int use_tcp = 0;
static char *servername = "linux";

int
main(void)
{
struct sockaddr_in name;
struct rpc_timeval time1 = {0,0};
struct rpc_timeval timeout = {1,0};
struct hostent *hent;
int ret;

memset(&name, 0, sizeof(name));
sethostent(1);
hent = gethostbyname(servername);
memcpy(&name.sin_addr, hent->h_addr, hent->h_length);

ret = rtime(&name, &time1, use_tcp ? NULL : &timeout);
if (ret < 0)
perror("rtime error");
else {
time_t t = time1.tv_sec;
printf("%s\n", ctime(&t));
}

exit(EXIT_SUCCESS);
}

関 連 項 目

ntpdate (1), inetd (8)

こ の 文 書 に つ い て

こ の man ペ ー ジ は Linux man-pages プ ロ ジ ェ ク ト の リ リ ー ス 5.10 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は https://www.kernel.org/doc/man-pages/ に 書 か れ て い る 。