有没有办法使用Perl和Linux或Solaris环境读取其他进程的环境变量?

前端之家收集整理的这篇文章主要介绍了有没有办法使用Perl和Linux或Solaris环境读取其他进程的环境变量?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在Perl中,我需要读取其他进程的环境.

>脚本正在以root身份运行
特权.
>脚本将会
Linux和Solaris中运行.
>我想要一个大多数平台无关的解决方案,至少在Linux和Solaris之间.在Linux中,检查/ env /< proc_id> / environ可以得到我的答案.
>我想避免分叉.我已经有一个解决方案,“/usr/ucb / ps -auxwwwe $pid”

有任何想法吗?

解决方法

对于Solaris,您可以尝试使用 procfs module from CPAN.即使这个模块仍然很年轻,这个引用听起来很有希望:

Brian Farrell sent a very useful patch which handles
inspection of argv and environment of processes
other than the currently running process.

我想象这可能只是最初的环境(就像linux下的environ文件),但这似乎是你想要的?

否则,虽然我看到你说你不想分叉,但一个简单的解决方案可能会是曲柄〜20行的C,以产生一个小程序,只是在Solaris环境中排除了与Linux环境文件完全相同的环境.我已经有了非常相似的东西.如果你有兴趣,我可以发表.

编辑(读取OpenSolaris pargs.c之后):环境变化时,在Solaris下重新分配环境缓冲区,因此psinfo指针可能无效.对于防弹解决方案,您需要追踪_environ.这可能比你需要的更麻烦… pargs -e< pid>可能是对UCB ps(1)更好的替代,如果你做叉路线,但是.

原文链接:https://www.f2er.com/Perl/171525.html

猜你在找的Perl相关文章