2016-11-17 2 views
3

Я пишу плагин для приложений iOS (я пощажу вам подробности). Когда мой пакет загружен, что не обязательно, когда загружается основной пакет приложений, я хотел бы получить «Uptime» процесса в секундах (или выше).iOS - получить время начала процесса после факта

Я знаю, что в других ОС (Unix/Linux/Android) я мог перечислять kinfo_proc или использовать подход /proc/self/stat, но я не смог достичь своей цели из изолированной изолированной программы приложения iOS.

Есть ли стандартный syscall/NSProcessInfo свойство, которое я могу использовать для этого?

Целью этого является главным образом отладка, но она может превратиться в функцию по дороге. Поэтому подход, который подходит для AppStore, является предпочтительным, но не обязательным.

+0

Что вы подразумеваете под 'Я сохраню вам детали'? Это «опечатка»? – Lion

+0

Извините, для того чтобы написать «запасные детали» ... – Elist

ответ

3

Вы можете использовать [[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); 

Я не уверен, что в App Store права, но это работает для меня как в симуляторе и на устройстве , Попробуйте представить и сообщить нам?

+0

Спасибо, я дам ему попробовать – Elist

+1

Работает отлично от Xcode, спасибо! Я не собираюсь вносить его в ближайшее время, но когда я это сделаю, я буду держать вас в курсе. – Elist

Смежные вопросы