首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Swift中获取有关进程的信息

在Swift中获取有关进程的信息
EN

Stack Overflow用户
提问于 2017-05-09 16:10:42
回答 1查看 3.7K关注 0票数 2

我试图在Swift中获得一些有关进程的数据。我使用这段代码作为起点:

代码语言:javascript
复制
pid_t pid = 10000;
rusage_info_current rusage;
if (proc_pid_rusage(pid, RUSAGE_INFO_CURRENT, (void **)&rusage) == 0)
{
    cout << rusage.ri_diskio_bytesread << endl;
    cout << rusage.ri_diskio_byteswritten << endl;
}

取自Per Process disk read/write statistics in Mac OS X

但是,我很难将上面的代码转换为Swift:

代码语言:javascript
复制
var usage = rusage_info_v3()     
if proc_pid_rusage(100, RUSAGE_INFO_CURRENT, &usage) == 0
{
    Swift.print("Success")
}

函数prod_pid_rusage需要一个类型为rusage_info_t?的参数,但我不能实例化该类型的实例。在Swift中可以使用这个函数吗?

你好,Sascha

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-09 18:08:38

在C中,您必须获取rusage_info_current变量的地址,并将其转换为proc_pid_rusage()所期望的类型。在Swift中,这是使用withUnsafeMutablePointer()withMemoryRebound()完成的

代码语言:javascript
复制
let pid = getpid()
var usage = rusage_info_current()

let result = withUnsafeMutablePointer(to: &usage) {
    $0.withMemoryRebound(to: rusage_info_t?.self, capacity: 1) {
        proc_pid_rusage(pid, RUSAGE_INFO_CURRENT, $0)
    }
}
if result == 0 {
    print(usage.ri_diskio_bytesread)
    // ...
}

你必须加上

代码语言:javascript
复制
#include <libproc.h>

到桥接头文件以使其编译。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43874880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档