如何确定Cocoa(OS X)应用程序的启动时间

3
我正在为OS X编写一个应用程序,需要从日志中获取消息并发送回我们的服务器进行分析/故障排除。我知道可以使用苹果系统日志(ASL)功能来获取所需内容,但希望仅获取当前会话的日志消息。我可以在AppDelegate init方法中获取时间:
    // now minus one second
    NSDate *startTime = [NSDate dateWithTimeIntervalSinceNow:-1];

不过我想知道系统是否有更准确的记录应用程序启动时间的方法。我查看了NSProcessInfo,但没有找到相关内容。除了在应用程序本身记录时间之外,还有其他确定进程启动时间的方法吗?

1个回答

7
我没有Mac可供验证此方法是否适用于OS X,但C标准库在<time.h>头文件中提供了clock()函数,可与CLOCKS_PER_SEC一起使用,以获取自程序启动以来经过的秒数。 编辑 这应该可以让您在程序启动后的一秒内获得时间,无论何时调用它。
NSDate *startTime = [NSDate dateWithTimeIntervalSinceNow:-clock()/CLOCKS_PER_SEC];

这并没有比 OP 提到的基于 NSDate 的方法提供任何优势。我认为他正在寻找一种读取系统记录的应用程序启动记录的方法,而无需自己存储启动日期的方式。 - Andrew Madsen
2
@AndrewMadsen,这 确实clock() 的作用 - 根据链接中的文档,它“返回自程序启动以来经过的时钟计时器滴答数。” 不过,名称有些误导。 - Sergey Kalinichenko
这种方法至少提供了比我以前使用的更准确的应用启动时间度量。谢谢! - Jonukas
确实,对于错误信息感到抱歉!已经给您的答案点赞了:)。 - Andrew Madsen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接