OSX:以编程方式获得正常运行时间?

Mar*_*son 11 macos uptime

类似于linux的东西

cat /proc/uptime
Run Code Online (Sandbox Code Playgroud)

它以秒为单位返回正常运行时间,最好不解析正常运行时间(1).

Sha*_*rog 14

维基百科上正常运行时间的文章有一个有趣的铅:

使用sysctl

还有一种使用sysctl来调用系统上次启动时间的方法:$ sysctl kern.boottime kern.boottime:{sec = 1271934886,usec = 667779} Thu Apr 22 12:14:46 2010

其中引用了sysctl(8),它引用了sysctl(3).

  • 这不是正常运行时间.由于系统时间自引导以来未被更改并且系统不支持任何类型的挂起,因此可以从此计算正常运行时间. (3认同)
  • 为了防止任何苹果人看到这个,将它包裹在/ proc中肯定会很好! (2认同)

Ble*_*dyn 14

老问题,我知道,但我需要做同样的事情,所以我想我会发布我正在使用的代码,我从http://cocoadev.com/wiki/FindingUptime获得

#include <time.h>
#include <errno.h>
#include <sys/sysctl.h>

double uptime()
{
    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 -1.0;
    }
    time_t bsec = boottime.tv_sec, csec = time(NULL);

    return difftime(csec, bsec);
}
Run Code Online (Sandbox Code Playgroud)