Ale*_*hen 30 unix macos process
我需要找出unix进程加载的库以及可能在整个生命周期中使用的库.这有可能吗?或者更好的是,我有一个库名,我需要找出使用它的进程,这是可能的.
同样,是否可以通知unix进程何时启动以及何时退出.它们不是我流程的子流程,我只需要全局了解.
更新:
我想我没有提供足够的信息.我正在谈论的unix是MacOS X(即使有人说它并不是真正完全unix),我正在寻找一种方法来找到一个进程所加载的库,我需要用C/C++来完成它.
Con*_* Ma 10
在OS X上,只需要设置 DYLD_PRINT_LIBRARIES
export DYLD_PRINT_LIBRARIES=1
./your_process
Run Code Online (Sandbox Code Playgroud)
在Mac OS X上,您可以使用vmmap $pid获取进程的映射内存区域列表.这确实显示了所有已加载的库(至少它在10.7.5上适用于我).
ps -A将为您提供所有进程的列表,因此ps -A | grep $APPNAME将为您提供进程ID $ pid以供使用vmmap $pid.lsof -p $pid也有效.
问题似乎是要求C++的动态方法.您可以使用这些命令进行轮询并分析结果,但您可能会错过快速加载/卸载事件.
lsof是BSD许可下的开源软件.它的源代码无疑提供了一些如何从C/C++中做到这一点的见解.请参阅:http://en.wikipedia.org/wiki/Lsof
你可以使用lsof.有关详细信息,请参见手册页.另一个工具是strace.要查看是否启动了流程,您可以使用ps -ef管道grep或类似工具pgrep.检查返回值以了解是否退出.
| 归档时间: |
|
| 查看次数: |
33912 次 |
| 最近记录: |