C言語システムコール-time

timeシステムコール

概要

timeはシステムの時刻を取得します。


引数には戻り値と同じ値が代入されます。

これは、time_t型の変数を扱うことができなかった時代のOS向けに使用されていた名残です。


timeで取得する時刻は秒単位であり、gettimeofdayシステムコールのようにマイクロ秒で時刻を取得することはできません。


システムの現在時刻を設定する場合にはstimeシステムを使用します。

stimeの実行にはroot権限が必要となります。

なお、FreeBSD系OSではtimeはCライブラリ関数として用意されており、stimeは存在しない場合があります。その場合、時刻変更にはsettimeofdayシステムコールを使用することとなります。


サンプルプログラム


#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <time.h>

/*!
 * @brief     システムの現在時刻を表示する
 * @return    0:success/-1:failure
 */
static int
show_now_date(void)
{
    time_t tm = 0;

    tm = time(NULL);
    if(tm < 0){
        printf("Error: time() %s\n", strerror(errno));
        return(-1);
    }

    fprintf(stdout, "%s\n", ctime(&tm));

    return(0);
}

int
main(int argc, char *argv[])
{
    int rc = 0;

    if(argc != 1){
        fprintf(stderr, "Usage: %s\n", argv[0]);
        exit(EXIT_FAILURE);
    }

    rc = show_now_date();
    if(rc != 0) exit(EXIT_FAILURE);

    exit(EXIT_SUCCESS);
}

関連ページ