1

サーバー時間をクライアント時間と同期しようとしています。以下のサーバー時間を取得するコードを取得しました。サーバーで実行すると、クライアントのログイン時に。クライアントに時刻を送信しますが、「クライアント」のシステム時刻をサーバーから送信する時刻に変更するにはどうすればよいですか。

setenv などについてググったのですが、実際に Linux C++ で時刻を変更するにはどうすればよいでしょうか。

以下のコードを使用して、現在の時刻を取得できます。

/* localtime example */
#include <stdio.h>
#include <time.h>

int main ()
{
  time_t rawtime;
  struct tm * timeinfo;

  time ( &rawtime );
  timeinfo = localtime ( &rawtime );
  printf ( "Current local time and date: %s", asctime (timeinfo) );

  return 0;
}
4

1 に答える 1

3

Linux (または Unix、または Posix) システムは、UNIX エポックから時間を測定します。最下位レベル (時間関連のsyscallsおよびカーネル) では、タイムゾーンは実際には関係ありません。タイムゾーンは、 localtime(3)およびstrftime(3)およびその他の関数を介したライブラリです。

time(7)の man ページもお読みください。

NTP プロトコルを使用して (ローカル マシンとリモート マシンの両方で) 時刻を同期したい場合 ( ntpdchrony、 ....を使用ntpdate)、または少なくともrdate(ただし NTP が望ましい)。

時刻を問い合わせるシステム コールは、gettimeofday(2)time(2)clock_gettime(2) ですCLOCK_REALTIME

settimeofday (2)およびadjtimex(2)システムコールを使用して時刻を設定できます。通常、これには root 権限が必要です。

于 2012-08-20T11:35:46.657 に答える