18 lines
375 B
C
18 lines
375 B
C
#include <time.h>
|
|
#include <errno.h>
|
|
#include <sys/sysctl.h>
|
|
|
|
long uptime(void)
|
|
{
|
|
struct timeval boottime;
|
|
size_t len = sizeof(boottime);
|
|
int mib[2] = { CTL_KERN, KERN_BOOTTIME };
|
|
if (sysctl(mib, 2, &boottime, &len, NULL, 0) < 0)
|
|
{
|
|
return -1L;
|
|
}
|
|
time_t bsec = boottime.tv_sec, csec = time(NULL);
|
|
|
|
return (long) difftime(csec, bsec);
|
|
}
|