gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 00:57:11 30 4
gpt4 key购买 nike

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

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:

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 中使用该函数?

问候,萨沙

最佳答案

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

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)
// ...
}

你必须添加

#include <libproc.h>

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

关于swift - 在 Swift 中获取有关进程的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43874880/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com