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);
}