我在下面的参数中使用dtrace计算特定的进程网络流量使用情况:
sudo dtrace -n 'syscall::recvfrom:return { @[pid] = sum(arg0); }'我怎样才能在目标C中使用dtrace?
我使用NSTask启动具有上述参数的dtrace,但是当这个dtrace命令的结果在终止dtrace之后显示出来时,除非终止dtrace,否则我无法看到结果。由于dtrace处于计算给定进程流量的循环中,并且由于使用了NSPipe,所以我无法使用[task terminate]命令。所以我的主要问题是:
如何在目标C中使用NSTask或不使用它(通过另一种方法)并正确地终止它,然后看到结果?
发布于 2014-06-26 13:13:11
默认行为是不打印任何内容,但您可以放入配置文件kicker以使其在间隔时间内打印输出。增加一句,如:
profile:::tick-1sec
{
printa(@);
}应该达到预期的效果。
或者,使用您的sudo调用:
sudo dtrace -n 'syscall::recvfrom:return { @[pid] = sum(arg0); } profile:::tick-1sec { printa(@); }'https://stackoverflow.com/questions/24425262
复制相似问题