gpt4 book ai didi

objective-c - 如何在 OS X 的 objective-c 代码中使用 "nettop"获取网络统计信息?

转载 作者:搜寻专家 更新时间:2023-10-30 20:18:31 26 4
gpt4 key购买 nike

我需要以编程方式获取 OS X 中特定进程/应用程序发送和接收的字节数。

有命令行“nettop”可以做到这一点。我想在我的代码中启动它并将结果返回到缓冲区(例如 NSString),然后解析它。

例如,我使用了主题中的以下代码: Execute a terminal command from a Cocoa app

NSTask *task;
task = [[NSTask alloc] init];
[task setLaunchPath: @"/usr/bin/nettop"];

NSPipe *pipe;
pipe = [NSPipe pipe];
[task setStandardOutput: pipe];

NSFileHandle *file;
file = [pipe fileHandleForReading];

[task launch];

NSData *data;
data = [file readDataToEndOfFile];

NSString *string;
string = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];
NSLog (@"result returned:\n%@", string);

问题是它返回空字符串。如何解决以下问题?

附言如果您知道/有示例代码如何计算每个进程接收和发送的字节数,请提供。

最佳答案

顺便说一句:你有看控制台吗?我收到:打开终端时出错:未知。

打印此消息是因为您正尝试以交互模式运行 nettop。但看起来 nettop 不支持非交互模式。因为使用 top 一切都运行得很好,使用休闲设置:

[task setLaunchPath: @"/usr/bin/nettop"];
[task setArguments:@[@"-l1"]];

根据 Google -l1 以非交互模式运行它。使用 top 一切都运行得很好,但是使用 nettop 就不行了。

关于objective-c - 如何在 OS X 的 objective-c 代码中使用 "nettop"获取网络统计信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20047605/

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