Eli*_*ist 3 plugins process sandbox ios
我正在为 iOS 应用程序编写一个插件包(我会为您提供详细信息)。当我的包被加载时,这不一定是在主应用程序包加载时,我想以秒(或更高)的分辨率获得进程的“正常运行时间”。
我知道在其他操作系统(Unix/Linux/Android)中我可以枚举kinfo_procs 或使用该/proc/self/stat方法,但我无法从 iOS 应用程序沙箱内部实现我的目标。
NSProcessInfo我可以使用一些标准的系统调用/属性吗?
这样做的目的主要是为了调试,但它可能会变成一个功能。因此,一种适用于 AppStore 的方法是首选,但不是强制性的。
您可以使用[[NSProcessInfo processInfo] processIdentifier]获取PID,然后sysctl获取unix 启动时间。
对于同一个问题,我实际上在 SO 上找到了另一个答案,就在 OSX 上:Is there any way to get the application's run time in Cocoa for OS X?
#include <sys/sysctl.h>
#include <sys/types.h>
pid_t pid = [[NSProcessInfo processInfo] processIdentifier];
int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, pid };
struct kinfo_proc proc;
size_t size = sizeof(proc);
sysctl(mib, 4, &proc, &size, NULL, 0);
NSDate *startTime = [NSDate dateWithTimeIntervalSince1970:proc.kp_proc.p_starttime.tv_sec];
NSLog(@"Process start time for PID:%d is %@", pid, startTime);
Run Code Online (Sandbox Code Playgroud)
我不确定 App Store 的资格,但这在模拟器和设备上都对我有用。尝试提交并告诉我们?