time()関数の単位は秒なので使えません。
clock()関数は精度はtime()関数より高いようですが、時刻を取得するものではないようです。
いろいろ検索してみると、gettimeofday()関数を使えば良いらしいということがわかりました。
#include <stdio.h>
#include <sys/time.h>
int main(int argc, char *argv[]) {
struct timeval t;
gettimeofday(&t, NULL);
unsigned long long now = t.tv_sec * 1000ull + t.tv_usec / 1000ull;
printf("Time: %llu\n", now);
return 0;
}
tv_secは秒なので1000倍、tv_usecはマイクロ秒なので1000で割ったものを足しています。
Javaで同じように出力するプログラムを書いて比較してみました。
class Main {
public static void main(String[] args) {
System.out.println("Time: " + System.currentTimeMillis());
}
}
全く同時には実行できないので返す結果は少し異なりましたが、数値を見る限り大丈夫そうな感じでした。
これで時刻をミリ秒で扱えます。良かった、良かった。