Как получить время в миллисекундах во FreeBSD? - PullRequest
7 голосов
/ 03 марта 2011

В Linux я могу найти текущее время в миллисекундах, используя команду:

date +%s%N

но во FreeBSD я получаю только

[13:38 ]#date +%s%N
1299148740N

Как узнать время в миллисекундах (или наносекундах) во FreeBSD?

Ответы [ 4 ]

6 голосов
/ 02 февраля 2013

Команда BSD date не поддерживает миллисекунды.Если вы хотите date с поддержкой миллисекунд, установите пакет GNU coreutils.

Я сталкивался с этим на OS X, date от BSD.Решением было brew install coreutils и ln -sf /usr/local/bin/gdate $HOME/bin, и убедившись, что $HOME/bin стоит первым в PATH.

3 голосов
/ 03 марта 2011

Используйте gettimeofday(), например:

#include <stdio.h>
#include <sys/time.h>
int main(void)
{
  struct timeval time_now;
    gettimeofday(&time_now,NULL);
    printf ("%ld secs, %ld usecs\n",time_now.tv_sec,time_now.tv_usec);

    return 0;
}
1 голос
/ 03 марта 2011

Попробуйте использовать tai64n из daemontools:

$ echo | tai64n | tai64nlocal
2011-03-03 09:45:37.833010500

$ ps | tai64n | tai64nlocal
2011-03-03 09:52:30.817146500   PID TTY          TIME CMD
2011-03-03 09:52:30.817150500  7154 pts/1    00:00:07 bash
2011-03-03 09:52:30.817157500 20099 pts/1    00:00:00 ps
2011-03-03 09:52:30.817159500 20100 pts/1    00:00:00 tai64n
2011-03-03 09:52:30.817162500 20101 pts/1    00:00:00 tai64nlocal
0 голосов
/ 31 июля 2015

Вот одна строка для любого недавнего Perl:

perl -MTime::HiRes=gettimeofday -MPOSIX=strftime -e '($s,$us) = gettimeofday(); printf "%d.%06d\n", $s, $us'
1487594425.611120

(изменено с этот ответ на аналогичный вопрос)

...