2016-11-17 4 views
3

iOSアプリケーション用のプラグインバンドルを作成しています(詳細はお伝えします)。私のバンドルがロードされたとき、必ずしもメインのアプリケーションバンドルがロードされているわけではありませんが、私はプロセスの「稼働時間」を秒以上の解像度で取得したいと考えています。iOS - 事後に自己プロセスの開始時刻を取得する

私はkinfo_procを列挙するか、/proc/self/statというアプローチを使用していましたが、iOSアプリケーションサンドボックスから目標を達成できませんでした。他のOS(Unix/Linux/Android)

標準的なsyscall/NSProcessInfoプロパティがありますか?

これは主にデバッグ用ですが、機能が低下する可能性があります。したがって、AppStoreの対象となるアプローチが推奨されますが、必須ではありません。

+0

「あなたに詳細を保存しますか?」とはどういう意味ですか?この「タイプミス」ですか? – Lion

+0

申し訳ありませんが、 "詳細を書き留めてください"と書かれています... – Elist

答えて

3

[[NSProcessInfo processInfo] processIdentifier]を使用してPIDを取得し、次にsysctlを使用してUNIXの開始時間を取得できます。 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の資格についてはよく分からないが、これは、シミュレータでは、デバイス上で私の両方のために働い:

私は実際にはOSX上で、同じ質問に対してSO上で別の答えを見つけました。送信してお知らせください。

+0

ありがとう、私はそれを試してみます – Elist

+1

Xcodeから完璧な作業、ありがとう!私はすぐにそれを提出するつもりはありませんが、私がそうした場合、私はあなたを投稿し続けます。 – Elist

関連する問題