No.13 Xcode(5.1.x) 获取设备信息, 系统信息

#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
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值