获取ios 系统 硬件信息
2013-05-05 21:54
465 查看
在获取和系统相关的硬件信息的时候,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地址等。
内核 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地址等。
相关文章推荐
- js获取客户端计算机硬件信息与系统信息
- JavaScript 获取客户端计算机硬件及系统信息
- iOS如何获取系统通讯录信息
- js获取客户端计算机硬件及系统信息
- iOS 获取设备类型和系统信息
- IOS获取系统信息
- Solaris中获取硬件以及系统配置信息
- WINCE7.0 获取CPU,MEMORY等硬件和系统信息
- 如何获取iphone的硬件版本以及系统信息
- 重新想象 Windows 8 Store Apps (30) - 信息: 获取包信息, 系统信息, 硬件信息, PnP信息, 常用设备信息
- 教你如何获取ios系统信息
- iOS获取屏幕宽高、设备型号、系统版本信息
- JavaScript 获取客户端计算机硬件及系统信息
- 安卓获取APP的信息以及整个硬件、系统信息
- Dart获取系统和硬件信息
- Inxi:获取Linux的系统和硬件信息
- C/C++通过WMI和系统API函数获取系统硬件配置信息
- JavaScript 获取客户端计算机硬件及系统信息
- iOS获取当前系统的相关信息 - - 博客频道 - CSDN.NET (3)
- iphone开发之通过unix系统底层获取和系统相关的硬件信息