獲取ios 系統 硬體資訊
在獲取和系統相關的硬體資訊的時候,api的介面有時並不是很多。但是我的理解是iOS終究是一個作業系統,是一個基於unix的衍生系統,從作業系統的角度來理解的話,系統底層的東西是很豐富的。
核心 sysctl 含義詳解:
l compat子樹:核心二進位制相容相關的控制
l debug子樹:核心除錯與資訊查詢
l dev子樹:用於遍歷和查詢系統中的裝置資訊
l hw子樹:硬體驅動資訊及行為控制
l kern子樹:核心核心資訊及行為控制
l kstat子樹:核心統計資料
l machdep子樹:平臺相關的行為控制
l net子樹:網路子系統
l p1003_1b子樹:POSIX 1003.1b 實時擴充套件行為控制
l security子樹:核心安全特性行為控制
l user子樹:使用者環境配置
l vfs子樹:虛擬檔案系統資訊和行為控制
l vm子樹:虛擬記憶體子系統統計資料和行為控制
l 通過 sysctl 進行調優。
這樣子通過下面的方式,可以得到很多的資訊,包括CPU,記憶體大小等資訊:
+ (NSString *) getSysInfoByName:(char *)typeSpecifier
{
size_t size;
sysctlbyname(typeSpecifier, NULL, &size, NULL, 0);
char *answer = malloc(size);
sysctlbyname(typeSpecifier, answer, &size, NULL, 0);
NSString *results = [NSString stringWithCString:answer encoding: NSUTF8StringEncoding];
free(answer);
return results;
}
獲取平臺資訊
+ (NSString *) platform
{
return [self getSysInfoByName:"hw.machine"];
}
+ (NSUInteger) getSysInfo: (uint) typeSpecifier
{
size_t size = sizeof(int);
int results;
int mib[2] = {CTL_HW, typeSpecifier};
sysctl(mib, 2, &results, &size, NULL, 0);
return (NSUInteger) results;
}
獲取CPU頻率
+ (NSUInteger) getCpuFrequency
{
return [self getSysInfo:HW_CPU_FREQ];
}
獲取匯流排頻率
+ (NSUInteger) getBusFrequency
{
return [self getSysInfo:HW_BUS_FREQ];
}
獲取總的記憶體大小
+ (NSUInteger) getTotalMemory
{
return [self getSysInfo:HW_PHYSMEM];
}
獲取使用者記憶體
+ (NSUInteger) getUserMemory
{
return [self getSysInfo:HW_USERMEM];
}
獲取socketBufferSize
+ (NSUInteger) maxSocketBufferSize
{
return [self getSysInfo:KIPC_MAXSOCKBUF];
}
iphone下獲取可用的記憶體大小
+ (NSUInteger)getAvailableMemory
{
vm_statistics_data_t vmStats;
mach_msg_type_number_t infoCount = HOST_VM_INFO_COUNT;
kern_return_t kernReturn = host_statistics(mach_host_self(), HOST_VM_INFO, (host_info_t)&vmStats, &infoCount);
if(kernReturn != KERN_SUCCESS)
return NSNotFound;
return (vm_page_size * vmStats.free_count);// / 1024.0) / 1024.0;
}
其他還有很多的資訊和控制,包括網路相關的操作,wifi的mac地址等。