在Perl中,我需要阅读其他进程的环境。
特权。
在Linux和Solaris上均可运行。
有任何想法吗?
最佳答案
对于Solaris,您可以尝试procfs module from CPAN。即使这个模块看起来还很年轻,这个引用听起来还是很有希望的:
我想这可能只是初始环境(就像Linux下的environ
文件一样),但这似乎就是您想要的?
否则,尽管我看到您说您不想 fork ,但是一个简单的解决方案可能是启动大约20行C来生成一个小的程序,该程序只是在Solaris上吐出与Linux environ
文件完全相同的环境。我已经在C中有非常相似的东西。如果您有兴趣,我可以发布。
编辑(在阅读OpenSolaris pargs.c之后):当环境更改时,环境缓冲区在Solaris下重新分配,因此psinfo指针可能无效。对于防弹解决方案,您需要查找_environ。不过,这可能比您需要的麻烦更多。但是,如果您确实走了岔路,pargs -e <pid>
可能是UCB ps(1)
的更好替代品。