2

我需要在 Mac OSX 上读取磁盘队列长度(分别用于读取和写入操作)。我已经得出结论,这可能只能通过 dtrace 来完成(我很乐意在这里犯错,但是我没有找到任何不同的方法)。提供此信息的唯一方法是打开 dtrace 脚本。我需要能够在我的 C 程序中访问它提供的信息(或者更确切地说能够实现它的逻辑)。作为整个 dtrace 业务,libdtrace 的使用非常神秘(考虑到私有 API)。有没有什么例子(除了我发现的一些没有回答我的问题 - libdtrace 缓冲输出http://www.osdevcon.org/2008/files/osdevcon2008-petr.pdf)可以帮助我吗?

4

1 回答 1

0

直接使用 libdtrace 可能有点麻烦,因为它在技术上是一个私有 API,但您可以在其他 DTrace 使用者中找到示例。libdtrace 在支持它的所有平台(Mac OS、Solaris、FreeBSD)上基本相同,因此 API 非常稳定。然而,Solaris 获得了更多更新,并且 IIRC Mac OS 不支持其他平台上可用的所有功能。但是,这为您提供了更多示例。

您可以dtrace在其中一个平台上查看命令的源代码,也可以查看库的某些包装器的源代码,例如node-libdtrace。我推荐后者,因为它只是一个提供重要高级操作的包装器,这应该可以更容易地找出哪些代码在做什么。

于 2013-05-21T22:16:01.280 回答