我可以在 Mac OS X 10.7.4 上从 ps 获取 WCHAN 吗?

我可以在 Mac OS X 10.7.4 上从 ps 获取 WCHAN 吗?

从手册来看,似乎ps -AO wchan应该告诉我一切都在睡觉,但一切都显示为-. (并nwchan作为0)。他们是否废除了内核中旧的sleep()/接口,或者我是否需要调整一些设置来获取信息?tsleep()

如果p->p_wchan在 Darwin 11 中实际上始终为零,是否有另一种方法可以找出正在等待的进程?

编辑:确实,p->p_wchan甚至没有在内部定义struct procsysctl接口只是在导出时将字段清零。中有uu_wchanuu_wmesg成员struct uthread,由接口设置_sleep并通过模拟tsleep函数设置,但我还没有找到任何东西可以使这些成员可供用户空间使用。ps -MAO wchan一方面不是。

(整个struct uthread事情似乎是 XNU 特有的,一种将 FreeBSD 接口改造到 Mach 上的方法,因此从其他地方找到解决方案的希望很小)。

相关内容