0

我使用带有以下参数的 dtrace 来计算特定进程的网络流量使用情况:

sudo dtrace -n 'syscall::recvfrom:return { @[pid] = sum(arg0); }'

我如何在目标 C 中使用 dtrace?

我曾经使用NSTask上述参数启动 dtrace,但由于在终止 dtrace 后会显示此 dtrace 命令的结果,除非终止 dtrace,否则我看不到结果。由于 dtrace 停留在一个循环中以计算给定进程的流量,并且由于使用了 NSPipe,我无法使用[task terminate]命令。所以我的主要问题是:

如何在有NSTask或没有它的情况下(通过另一种方法)在目标 C 中使用 dtrace 并正确终止它然后查看结果?

4

1 回答 1

0

默认行为是不打印任何内容,但您可以放入配置文件启动器以使其每隔一段时间打印输出。添加一个子句,如:

profile:::tick-1sec
{
  printa(@);
}

应该达到预期的效果。

或者,使用您的sudo电话:

sudo dtrace -n 'syscall::recvfrom:return { @[pid] = sum(arg0); } profile:::tick-1sec { printa(@); }'
于 2014-06-26T13:13:11.397 回答