スポンサーリンク

このドキュメントの内容は、以下の通りです。

久しぶりに time()を呼ぶプログラムを書かなければいけなかったので、
思い出しました。

time()関数は、呼び出した時刻の秒数を返します。

#include <time.h>
time_t time(time_t *tloc);

tloc でポインタを渡せば、メモリ内に時刻が格納されます。
time()も戻り値も時刻です。

サンプルコード


#include <stdio.h>
#include <stdlib.h>
#include <err.h>
#include <time.h>

int
main (int argc, char *argv[])
{
	time_t	tm;

	tm	= time ( NULL );

	if ( tm == (time_t)-1 )
	{
		err (EXIT_FAILURE, "can not get time");
	}

	(void) printf ("%d\n", tm);

	exit (EXIT_SUCCESS);
}

FreeBSDでの実装


FreeBSDでのtime()の実装は、以下のファイルです。
/usr/src/lib/libc/gen/time.c

/*
 * Copyright (c) 1983, 1993
 *	The Regents of the University of California.  All rights reserved.
 長いので省略
 */

#if defined(LIBC_SCCS) && !defined(lint)
static char sccsid[] = "@(#)time.c	8.1 (Berkeley) 6/4/93";
#endif /* LIBC_SCCS and not lint */
#include <sys/cdefs.h>
__FBSDID("$FreeBSD: src/lib/libc/gen/time.c,v 1.5.10.1.2.1 2009/10/25 01:10:29 kensmith Exp $");

#include <sys/types.h>
#include <sys/time.h>

time_t
time(t)
	time_t *t;
{
	struct timeval tt;
	time_t retval;

	if (gettimeofday(&tt, (struct timezone *)0) < 0)
		retval = -1;
	else
		retval = tt.tv_sec;
	if (t != NULL)
		*t = retval;
	return (retval);
}

これだけ見ていると、引数が必要だったのかな?という疑問があります。
time()が、というか、gettimeofday()が問題を起こすことはそうそうなさそうなので、(time_t)-1が返されることは、そうそうない気はしますが、エラー処理は必要ですね。

スポンサーリンク
スポンサーリンク
 
いつもシェア、ありがとうございます!


もっと情報を探しませんか?

関連記事

最近の記事

人気のページ

スポンサーリンク
 

過去ログ

2020 : 01 02 03 04 05 06 07 08 09 10 11 12
2019 : 01 02 03 04 05 06 07 08 09 10 11 12
2018 : 01 02 03 04 05 06 07 08 09 10 11 12
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12

サイト

Vim入門

C言語入門

C++入門

JavaScript/Node.js入門

Python入門

FreeBSD入門

Ubuntu入門

セキュリティ入門

パソコン自作入門

ブログ

トップ


プライバシーポリシー