#import <sys/mount.h>
#import <mach/mach.h>
- (void)deviceInfoWithIOS
{
NSDictionary* fattributes = [[NSFileManager defaultManager] attributesOfFileSystemForPath:NSHomeDirectory() error:nil];
NSNumber* freeSize = [fattributes objectForKey:NSFileSystemFreeSize]; // 设备剩余磁盘空间
NSNumber* totalSize = [fattributes objectForKey:NSFileSystemSize]; // 设备总磁盘空间
NSLog(@"diskSpace:%.2fGB/%.2fGB", [freeSize longLongValue]/(1024.0*1024.0*1024.0), [totalSize longLongValue]/(1024.0*1024.0*1024.0));
NSProcessInfo* processInfo = [NSProcessInfo processInfo];
NSLog(@"hostName: %@", [processInfo hostName]);
NSLog(@"processName: %@", [processInfo processName]); // 当前进程名
NSLog(@"globallyUniqueString: %@", [processInfo globallyUniqueString]); // 每次调用这个方法时,都返回不同的单值字符串,可以用这个字符串生成单值临时文件名
NSLog(@"operatingSystem: %lu", (unsigned long)[processInfo operatingSystem]);
NSLog(@"operatingSystemName: %@", [processInfo operatingSystemName]);
NSLog(@"operatingSystemVersionString: %@", [processInfo operatingSystemVersionString]);
NSLog(@"processorCount: %u", [processInfo processorCount]);
NSLog(@"activeProcessorCount: %u", [processInfo activeProcessorCount]);
NSLog(@"physicalMemory: %.4fMB", [processInfo physicalMemory]/(1024.0*1024.0)); // 设备物理内存
NSLog(@"systemUptime: %f hours", [processInfo systemUptime]/3600.0);
}
- (void)deviceInfoWithLinux
{
// 磁盘状态
struct statfs disk_stat = {0};
int ret = statfs("/private/var", &disk_stat);
if (ret >= 0)
{
NSLog(@"disk f_bsize:%d", disk_stat.f_bsize);
NSLog(@"disk f_iosize:%d", disk_stat.f_iosize);
NSLog(@"disk f_blocks:%llu", disk_stat.f_blocks);
NSLog(@"disk f_bfree:%llu", disk_stat.f_bfree);
NSLog(@"disk f_bavail:%llu", disk_stat.f_bavail);
NSLog(@"disk f_files:%llu", disk_stat.f_files);
NSLog(@"disk f_ffree:%llu", disk_stat.f_ffree);
NSLog(@"disk f_owner:%u", disk_stat.f_owner);
NSLog(@"disk f_type:%u", disk_stat.f_type);
NSLog(@"disk f_flags:%u", disk_stat.f_flags);
NSLog(@"disk f_fstypename:%s", disk_stat.f_fstypename);
NSLog(@"disk f_mntonname:%s", disk_stat.f_mntonname);
NSLog(@"disk f_mntfromname:%s", disk_stat.f_mntfromname);
NSLog(@"disk free:%.2fGB", disk_stat.f_bsize * disk_stat.f_bfree/(1024.0*1024.0*1024.0)); // 设备剩余磁盘空间
NSLog(@"disk total:%.2fGB", disk_stat.f_bsize * disk_stat.f_blocks/(1024.0*1024.0*1024.0)); // 设备总磁盘空间
}
// 内存状态
vm_statistics_data_t vmstat = {0};
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)&vmstat, &infoCount);
if (kernReturn == KERN_SUCCESS)
{
NSLog(@"vmstat free_count: %u", vmstat.free_count);
NSLog(@"vmstat active_count: %u", vmstat.active_count);
NSLog(@"vmstat inactive_count: %u", vmstat.inactive_count);
NSLog(@"vmstat wire_count: %u", vmstat.wire_count);
NSLog(@"vmstat zero_fill_count: %u", vmstat.zero_fill_count);
NSLog(@"vmstat reactivations: %u", vmstat.reactivations);
NSLog(@"vmstat pageins: %u", vmstat.pageins);
NSLog(@"vmstat pageouts: %u", vmstat.pageouts);
NSLog(@"vmstat faults: %u", vmstat.faults);
NSLog(@"vmstat cow_faults: %u", vmstat.cow_faults);
NSLog(@"vmstat lookups: %u", vmstat.lookups);
NSLog(@"vmstat hits: %u", vmstat.hits);
NSLog(@"vmstat purgeable_count: %u", vmstat.purgeable_count);
NSLog(@"vmstat purges: %u", vmstat.purges);
NSLog(@"vmstat speculative_count: %u", vmstat.speculative_count);
}
struct task_basic_info info = {0};
mach_msg_type_number_t size = sizeof(info);
kern_return_t kerr = task_info(mach_task_self(), TASK_BASIC_INFO, (task_info_t)&info, &size);
if (kerr == KERN_SUCCESS)
{
NSLog(@"task_info r_size:%.2fMB", info.resident_size/kMB);
NSLog(@"task_info v_size:%.2fMB", info.virtual_size/kMB);
}
// others
// http://hi.baidu.com/marktian/item/e0f555ee0e08b2225a2d64e0
}
No.13 Xcode(5.1.x) 获取设备信息, 系统信息
最新推荐文章于 2019-08-20 16:21:57 发布